On Wednesday 11 July 2007, Christoph wrote:
> So,
> 
> since yesterday I'm running this:
> 
> drivers/usb/host/ehci-hcd.c:611
>     /* complete the unlinking of some qh [4.15.2.3] */
>     if (status & STS_IAA) {
>         if (ehci->reclaim) {
>             COUNT (ehci->stats.reclaim);
>             ehci->reclaim_ready = 1;
>             bh = 1;
>         } else {
>             printk(KERN_ERR "AUA: ehci reclaim NULL status: %u\n", status);
>         }
>     }
> 
> 
> and got (once so far):
> 
> ...
> 
> no crash, all usb devices happy.
> 
> Conclusion:
> 
> - It's the bug. Anywhere else in the code reclaim_ready will only set
>   if ehci->reclaim is valid. 

Actually, I think that patch only papers over the bug.

The real bug being that the EHCI watchdog timer thing
is too overloaded, and in this case it fired and did
its thing too early ... before the STS_IAA interrupt
had a chance to fire.  We've seen some other problems
in this area, but the last patch to update it needed
to be reverted because it caused other problems.  If
you have a GIT tree handy:

 git show -p 26f953fd884ea4879585287917f855c63c6b2666

That is, the real fix is to rework the IAA watchdog
handling and split it out from other timers used by
the driver.  Combining the all is an ugly hack which
clearly has some problems.

... On the other hand, there's something to be said
for papering over problems in some cases.  Maybe ven
this one...


> - I spammed the wrong ML :)
> 
> I still have some questions to the usb ppl:
> * what is on status STS_IAA supposed to do?

See the EHCI spec; IAA == Interrupt on Async Advance,
and in this case it indicates that the unlink should
now proceed.  Except ... something moved forward with
the unlink already, before it should have.


> * should bh set anyway and call ehci_work?

Not unless there's really work to be done.  And there
would have been work, if something hadn't done that
work too early...


> * what is [4.15.2.3] referring to?

The EHCI 1.0 spec.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to