On Mon, 23 Jan 2012, Sebastian Andrzej Siewior wrote: > * Alan Stern | 2012-01-20 10:57:57 [-0500]: > > >It may be that the best solution is for the composite.c driver to > >implement Set-Config and Set-Interface requests in a workqueue, so that > >the calls could be made in process context. For now, you can avoid the > >problem by not calling dma_alloc_coherent in your endpoint-setup > >routine. > > This sounds like a good idea. delayed_status, here we come. > > >g_file_storage doesn't have this problem because it uses its own kernel > >thread for handling these requests. > It is not unique to this :) In general there is nothing wrong with doing > "it" in IRQ context. The file storage gadge needs lot of memory and it > is good not to use the emergency pools for that. As Nikolai Zhubr and Paul Zimmerman pointed out, handling Set-Config and Set-Interface in interrupt context sometimes _is_ wrong, i.e., when disabling endpoints involves calling dma_free_coherent. Apparently on ARM this routine requires process context. Alan Stern -- 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