On Mon, Dec 08, 2003, Herbert Xu <[EMAIL PROTECTED]> wrote:
> The UHCI driver only cleans up removed QH/TD/URB entries in the interrupt
> routine.  This means that if the interrupts aren't working for whatever
> reason (in my case it's a bug in suspend/resume), these entries will never
> be cleaned up.  This can easily cause deadlocks if you unlink an URB and
> then wait for it to be given back.
> 
> This patch fixes this by making the unlink schedule a tasklet to do the
> cleanup rather than triggering an interrupt.

I'll echo what Alan said and say the real fix here is fixing the
suspend/resume case.

Regardless, this patch makes things worse. We need to wait for the next
frame to know the hardware is done using the QHs and TDs before we can
clean them up.

This patch changes this so we clean up those entries before the hardware
is done, which is very bad.

That is why we wait for the next interrupt from the hardware, it's the
only way to ensure that the hardware is done using the memory before we
can clean it up.

JE



-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to