RE: Query - resetting and reenumerating root-hub

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

 



Alexander Kurpiers wrote:
> Gadiyar, Anand wrote:
> > Alan Stern wrote:
> >   
> >> On Mon, 7 Jun 2010, Gadiyar, Anand wrote:
> >>     
> >>> Hi all,
> >>>
> >>> On the OMAP3, we have a new hardware bug that causes the
> >>> EHCI controller to lock up under heavy stress. The only
> >>> known way to recover is to soft-reset the controller.
> >>>
> >>> I'm trying to implement some kind of recovery mechanism
> >>> for the ehci-omap driver. Is there a way to inform the
> >>> USB core that the root-hub and down-stream devices have
> >>> been reset and need to be re-enumerated?
> >>>       
> >> There's usb_hc_died().  It tells the core that the controller has
> >> stopped working.  The core then removes all devices below the root hub
> >> and marks the root hub as non-operational (the state is set to
> >> USB_STATE_NOTATTACHED).  But there is no re-enumeration; from that
> >> point on the root hub is unusable.
> >>
> >> This may not be exactly what you want.  Perhaps a better match would be
> >> usb_reset_device(), but that routine specifically excludes root hubs.
> >> You might be able to adjust it in some way, though.
> >>
> >> Another alternative is simply to unregister the hcd and then
> >> re-register it.
> >>
> >>     
> >
> > (Sorry, hit send before completing the mail)
> >
> > Thanks! As a quick test, I built the driver as a module. And
> > in the remove path, we soft-reset the controller anyway.
> >
> >   
> as I was the one who originally reported this problem, I can tell you
> that soft-reset of EHCI is not enough. I had to reset UHH to recover -
> sometimes losing EHCI for good, but I guess that was something else in
> the end.

Yes, we need to soft-reset the whole block through the UHH_SYSCONFIG,
not just EHCI.

I am still not able to make this mechanism work reliably. I've tried
a "save-functional-registers, soft-reset, restore-registers" approach
and it used to work a little better.

Another problem is detecting the lockup itself...

> 
> (I assume we are discussing the issue "Advisory 3.1.1.198 USB Host EHCI
> May Stall when Running High Peak-bandwidth Demanding Use Cases" from
> http://www.ti.com/litv/pdf/sprz278e).

Yes, this is the one. It took a lot of effort from multiple folks (and
a lot of time) to chase this bug down to it's root cause. I'm hoping
we fix this in future silicon, but sadly current users are stuck.

- Anand


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux