On 03/17/2010 09:30 AM, Alan Stern wrote: > On Tue, 16 Mar 2010, Jason Wessel wrote: > > >> Part of having the console stable requires that usb sysrq handler get >> executed in a tasklet. The hcd device lock is always held while the >> driver call backs are executed. The means you cannot get the sysrq >> printk's out to the usb console device after the in_flight urb queue >> is filled. >> > > Either I don't understand this comment properly or else it is simply > wrong. HCDs do not continue to hold their locks when handing completed > URBs back to drivers. The giveback call occurs with interrupts > disabled, but no locks are held. > > The call back from the urb processing holds a lock. The sysrq is invoked from that context, which will do a whole lot of printk() (sysrq-t for example). The problem is that writes will queue for a bit and then cannot get drained because the hcd lock is not available. Using a tasklet seemed like the obvious choice to move the sysrq processing to a context where the hcd lock is not likely to be in use. > Does this mean one of the patches in your series can be simplified? > I will further simplify if you have some recommendations. Thanks, Jason. -- 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