[U-Boot] [PATCH v2] EHCI: zero out QH transfer overlay in ehci_submit_async()

Wolfgang Denk wd at denx.de
Tue Jun 29 21:36:07 CEST 2010


Dear Sergei Shtylyov,

In message <201006282244.49973.sshtylyov at ru.mvista.com> you wrote:
> ehci_submit_async() doesn't really zero out the QH transfer overlay (as the EHCI
> specification suggests) which leads to the controller seeing the "token" field
> as the previous call has left it, i.e.:
> - if a timeout occured on the previous call (Active bit left as 1), controller
>   incorrectly tries to complete a previous transaction on a newly programmed
>   endpoint;
> - if a halt occured on the previous call (Halted bit set to 1), controller just
>   ignores the newly programmed TD(s) and the function then keeps returning error
>   ad infinitum.
> 
> This turned out to be caused by the wrong orger of the arguments to the memset()
> call in ehci_alloc(), so the allocated TDs weren't cleared either.
> 
> While at it, stop needlessly initializing the alternate next TD pointer in the
> QH transfer overlay...
> 
> Signed-off-by: Sergei Shtylyov <sshtylyov at ru.mvista.com>
> 
> ---
> Initialization of 'qh->qh_overlay.qt_next' turned out to be needed by the error
> cleanup code (seemingly useless, in its turn).
> 
> This is quite serious bug, so would be good to have the patch in v2010.06...
> 
>  drivers/usb/host/ehci-hcd.c |    3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Small is beautiful.


More information about the U-Boot mailing list