Re: OHCI hangs after failing to free resources

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Fri, 4 May 2007, Mike Nuss wrote:

> Further support (I dumped the 'dummy' td before freeing it). This is a
> new trace so the addresses won't match the last trace.
> 
> kernel: ohci_hcd 0000:00:13.0: leak ed c3e8e680 (#82) state 0 (has tds)
> kernel: ohci_hcd 0000:00:13.0: ed->dummy td c3e8d8c0; urb 00000000 index
> 0; hw next td 03e8d8c0
> ohci_hcd 0000:00:13.0:      info 00000000 CC=0 (CARRY) DI=0 SETUP 
> ohci_hcd 0000:00:13.0:      cbp 00000000 be 00000000 (len 0)
> ohci_hcd 0000:00:13.0: free ed->dummy: td c3e8d8c0
> 
> ed->dummy has a non-null next pointer! I don't believe that should ever
> be the case.

No, that's normal.  Read ohci-mem.c:td_alloc() and you'll see that each 
newly-allocated TD has its hwNextTD field set to point at itself.

In your previous messages you found that the

		/* INTR_WDH may need to clean up first */
		if (td->td_dma != head)
			goto skip_ed;

path was followed.  This indicates that a WDH signal isn't being received; 
the driver isn't getting a notification from the controller that the TD 
stored at 0x3e3d400 has been completed.  In fact, maybe the controller 
isn't completing that TD at all -- it doesn't appear to be on the done 
list.  But the HeadP pointer gets advanced beyond it.

As I understand it, the controller is always supposed to advance the HeadP 
pointer at the same time as it moves a TD to the done list, and it's 
supposed to generate an IRQ when the done list's head is changed.

Can you get a complete dump of all the ED and TD structures when the error 
occurs?  There's code in ohci-dbg.c to do it for you.

Alan Stern


-------------------------------------------------------------------------
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/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.