On Mon, Aug 27, 2012 at 1:46 PM, Sebastian Andrzej Siewior > One little question: Felipe suggested to replace the workqueue by a threaded > interrupt. You schedule the workqueue in interrupt context and once in ep0 > enqueue. The enqueue should be fine by executing one round and waiting for the > interrupt. Any reason why you suggested against it? A couple of rounds could pass with no interrupt, e.g. if a SET_CONFIGURATION request and a SET_INTERFACE request are both pending. Also, I ran into deadlocks when trying to invoke the gadget driver's callback from within the UDC enqueue function. I did attempt it; V2 of the patch had the workqueue removed, but I backed out the change for V3 after seeing so many problems.