On Tue, 9 Dec 2003, Herbert Xu wrote: > On Mon, Dec 08, 2003 at 01:04:39PM -0500, Johannes Erdfelt wrote: > > > > I'll echo what Alan said and say the real fix here is fixing the > > suspend/resume case. > > I agree completely. However, it would be nice to have a safety net > when things go wrong. In particular, being able to remove the uhci-hcd > module when the interrupts stop working for whatever reason can't be > a bad thing.
That's supposed to work right now. However, there may be a problem with the uhci_stop() routine. While I haven't checked this in detail, it appears that the first calls to uhci_free_pending_qhs() and uhci_free_pending_tds() may be unnecessary, while there ought to be a call to uhci_finish_completion() just after the reset_hc(). > > > 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. > > Sorry about that. Can you please comment on the following patch which > no longer frees the QHs and TDs outside of the interrupt routine. I suspect your patch is not really needed. Try implementing what I said above and see if it helps. Better yet, go through the code in uhci_stop() more carefully than I did and figure out what it really should be doing. Alan Stern ------------------------------------------------------- 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