On Mon, 12 Feb 2007, Oliver Neukum wrote:

> Hi Alan, list,
> 
> I am having trouble using the usb_autopm_get/put_interface.
> To wake a device on demand I need to use usb_autopm_get_interface().
> However the driver needs to hold a lock while calling
> usb_autopm_put_interface(). The driver's suspend method in turn
> needs to take a lock to wait for ongoing IO. As the actual autosuspend
> takes places in a workqueue, there's a classic AB-BA deadlock involving
> the driver's lock and pm_mutex.

Are you talking about the proposed usb-storage autosuspend changes?

Where and why does the driver need to hold a lock while calling 
usb_autopm_put_interface()?

> I think the cleanest solution is to provide lockless versions and let
> the caller take pm_mutex.

That doesn't feel right...

Incidentally, you might consider the problems involved in adding 
autosuspend support to usb-skeleton.  Nothing special is needed, but 
getting the locking just right requires a good deal of care; you have to 
worry about the BKL in addition to the driver's own io_mutex.

Alan Stern


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to