On Wed, Jul 31, 2013 at 10:15:12AM -0400, Tejun Heo wrote: > hello, > > On Wed, Jul 31, 2013 at 09:55:26PM +0800, Peter Chen wrote: > > I think the main point is we should allocate managed resource which is used > > at interrupt handler before devm_request_irq, and all resources used > > at interrupt > > handler should be managed. > > > > If we use non-managed resource at interrupt handler, but using managed interrupt > > handler, things still will go wrong if there is an odd (unexpected) > > interrupt after > > we finish deactivation at removal. > > In general, applying devm partially isn't a good idea. It's very easy > to get into trouble thanks to release order dependency which isn't > immediately noticeable and there have been actual bugs caused by that. > The strategies which seem to work are either > > * Convert everything over to devm by wrapping deactivation in a devres > callback too. As long as your init sequence is sane (ie. irq > shouldn't be request before things used by irq are ready). > > * Allocate all resources using devres but shut down the execution > engine in the remove_one(). Again, as all releases are controlled > by devres, you won't have to worry about messing up the release > sequencing. > thanks, Tejun. So, Alex and Fabio, this patch may not be suitable currently, since many resources at both EHCI and device side are non-managed. -- Best Regards, Peter Chen -- 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