Re: [Query] USB device autosuspend and its runtime usage count.

From: Oliver Neukum
Date: Mon Aug 13 2018 - 03:57:28 EST


On Mo, 2018-08-13 at 12:15 +0530, Anshuman Gupta wrote:
> Hi ,
> I need to test a functionality with USB autosuspend with latest kernel
> Linux 4.18-rc8. I am trying to autosuspend a USB key board, i enabled
> its autosuspend by doing echo "auto" to its "control" attributes.
> I am expecting USB keyboard to go to autosuspend after autosuspend_delay_ms.
> But USB key board is not going to autosuspend because its runtime usage
> count is not equal to zero.
>
> Below are the log snippets:
>
> root@intel-Kabylake-Client-platform:# cat /sys/bus/usb/devices/1-5/power/runtime_enabled
> enabled
> root@intel-Kabylake-Client-platform:# cat /sys/bus/usb/devices/1-5/power/control
> auto
> root@intel-Kabylake-Client-platform:# cat /sys/bus/usb/devices/1-5/power/autosuspend_delay_ms
> 2000
> root@intel-Kabylake-Client-platform:# cat /sys/bus/usb/devices/1-5/power/runtime_status
> active
> root@intel-Kabylake-Client-platform:# cat /sys/bus/usb/devices/1-5/power/runtime_usage
> 1
> root@intel-Kabylake-Client-platform:# sleep 60; cat /sys/bus/usb/devices/1-5/power/runtime_usage
> 1
>
> My USB keyboard runtime usage reference count is not decreasing to zero.
> Here am i missing something regarding runtime usage count or is it some issue with
> my kernel or OS?

Very hard to say without further information. Is the HID device the
only interface of the whole device?
Does the device support remote wakeup?
Is an LED on?

Usbhid does support autosuspend, but its criteria must be met.
And all interface drivers must call the device idle.
Or you have discovered a kernel bug.

Regards
Oliver