On Wed, 5 May 2010, Rob Duncan wrote: > > On May 5, 2010, at 12:03 PM, Alan Stern wrote: > > >> May 5 11:34:00 localhost kernel: usb 3-3: usb_autoresume_device: cnt 1 -> 1 > >> May 5 11:34:00 localhost kernel: usb 3-3: usb_autosuspend_device: cnt 0 -> -16 > > > > These -EBUSY error codes indicate that the usage_count for one of the > > interfaces is nonzero. (Well, it could be something else, like the > > child_count, but most likely it's the usage_count.) > > It appears that usb_autosuspend_device() is returning -EBUSY because > __pm_runtime_idle() sees !pm_children_suspended(). > > The child_count is 1, and ignore_children is 0. Right, that's what I said: The children of a device are its interfaces. You need to find out which interface has a positive usage_count and why. For an interface, the usage_count is manipulated mostly in the non-is_usb_device() pathways of the usb_autopm_*_interface_* routines. To confuse things, the driver and PM cores also make a few changes of their own (especially during probing) -- but these changes should add up to 0 in the end. 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