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