Re: btusb autosuspend failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Montag, 5. April 2010 22:55:08 schrieb Alan Stern:
> On Mon, 5 Apr 2010, Dominik Brodowski wrote:
> 
> > Okay, this was probably the most difficult issue I've ever hunted down:
> > 
> > In it's probe callback (1:0), btusb.c calls usb_driver_claim_interface()
> > for a different interface (1:1). The USB driver core then activates
> > runtime_suspend for this other interface (1:1), which means the parent usb
> > device children_count is increased by one.
> > 
> > However, for this other interface (1:1), there's a problem: nobody ever
> > tries to runtime-suspend it, even though it's usage count is 0.
> 
> Hmm.  Maybe usb_driver_claim_interface() should be changed.  Since the

Yes.

> probe routine never gets called for a claimed interface, it would make
> sense that the interface should start out in a suspended state.  So
> maybe claim_interface should call pm_runtime_set_suspended() instead of
> pm_runtime_set_active().

Yes, though ideally we wouldn't make an attempt to autosuspend
an interface a driver that does not support autosuspend has claimed.

> Oliver, do you know if this issue has come up before?

No, this is new. I suspect behavior has been changed by the switch
to the generic framework.

> > The only problem: "hciconfig hci0 up" fails to get the device to an useable
> > state again, even if I disable autosuspend again...
> 
> That's a new problem.  Does the device get autoresumed correctly?  If 
> yes, then where does the failure occur?

Exactly. CONFIG_USB_DEBUG should help in discovering what goes
wrong.

	Regards
		Oliver
--
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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux