
Dear Benoît Thébaudeau,
Hi Marek,
On Tuesday, May 14, 2013 4:13:33 AM, Marek Vasut wrote:
Dear Bo Shen,
Hi Marek,
On 5/13/2013 23:12, Marek Vasut wrote:
Dear Bo Shen,
Hi All,
On 5/6/2013 11:01, Bo Shen wrote:
Hi Marek,
On 5/3/2013 21:40, Marek Vasut wrote: > Dear Bo Shen, > >> Hi All, >> >> Now, I test usb host support with Atmel boards, for example, >> >> at91sam9x5ek board. >> >> When test OHCI USB host with usb keyboard. I meet the >> following >> >> issue. >> --->8--- >> U-Boot 2013.04-dirty (May 03 2013 - 11:00:34) >> >> CPU: AT91SAM9G35 >> Crystal frequency: 12 MHz >> CPU clock : 400 MHz >> Master clock : 133.333 MHz >> DRAM: 128 MiB >> WARNING: Caches not enabled >> NAND: 256 MiB >> MMC: mci: 0 >> In: serial >> Out: serial >> Err: serial >> Net: macb0 >> Hit any key to stop autoboot: 0 >> U-Boot> usb start >> (Re)start USB... >> USB0: scanning bus 0 for devices... 2 USB Device(s) found >> >> scanning usb for storage devices... 0 Storage Device(s) >> found >> >> U-Boot> setenv stdin usbkbd >> U-Boot> ERROR: sohci_submit_job: ENOMEM >> ERROR: sohci_submit_job failed >> ... ... >> (repeat to print these two error line) > > So the USB subsystem is leaking memory? Or do you only have too > small MALLOC > area?
I am not sure whether USB subsystem is leaking memory. I am digging it.
This issue is not relative with MALLOC area. This issue come out when all ptd[i].usb_dev (the maximum value of i is 64) is not NULL. Each time to call td_alloc, it will check whether ptd[i].usb_dev is NULL (i from 0 to 63), if not find one of ptd[i].usb_dev is NULL, then report ENOMEM.
All clue for this issue?
I assume you mean the TDs are all used up then? Are they not free'd ?
Yes, that's true, all TDs are used. Nowhere free them, so I use urb_free_priv() to free urb in sohci_return_job() instead of td_submit_job(), then it works well.
Benoit, you were the last one to plumb in it, right?
No. That was for EHCI, not OHCI.
Hmmm ... I don't have any OHCI device. Bo, maybe you can try tracing it and fixing it?
Best regards, Marek Vasut