Re: Continuous stream of small bulk transfers hangs on OHCI-based system

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

 



On Tue, 7 Aug 2012, Tomas Sokorai wrote:

> On Tue, Aug 7, 2012 at 3:42 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > I don't have time today to look further into this, but I'll get back to
> > you later.
> 
> No hurries, in fact I was gathering a bit more info about this behavior.
> I dumped the ed_rm_list when it is hung, and we have only one element
> that's unkillable:
> 
> [ 1108.841482] ohci_hcd 0000:00:04.0: ed_rm_list, ed ffff8800c781f140
> state 0x1 type bulk; next ed 00000000
> [ 1108.841489] ohci_hcd 0000:00:04.0:   info 08405103 MAX=64 DQ SKIP
> EP=2-IN DEV=3
> [ 1108.841494] ohci_hcd 0000:00:04.0:   tds: head c78261e0 DATA0 tail
> c78261e0 (not listing)

Yep; that's undoubtedly the one your program is trying to kill.

> Also, there's only one non-empty ed_rm_list "pass" after the
> finish_unlinks between SR intr disables, when not hung.

As it should be.

So the next step is to see what's happening inside finish_unlinks().  
The function is a big loop over the entries in the ed_rm_list, but 
we're considered just with the first part of the loop.  "last" is 
initially set to &ohci->ed_rm_list, and about line 945 we have:

		*last = ed->ed_next;

If everything were working right, ed->ed_next would be NULL (no other 
ED's on the list).  So either ed->ed_next points back to ed itself or 
else this line doesn't get executed at all.

The only way for it not be executed is if the "skip_ed" case occurs.  
Therefore your next task is to determine what's going on.  Does the 
tick_before() test succeed?  Does we follow the "goto skip_ed"?  Or is 
the list pointer messed up?

Alan Stern

--
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