我正在使用Linux内核4.4.55,我的情况是:当我通过命令暂停我的系统时
$ echo mem > /sys/power/state
一旦USB设备插入电路板,第一次挂起就失败了。之后,再次输入上述命令,第二次暂停成功。这很奇怪。
我继续调查usb核心组件(... / drivers / usb / core /),我发现:第一次挂起失败,因为函数usb_port_runtime_suspend()在调用函数时返回错误代码“-EAGAIN”
if (dev_pm_qos_flags(&port_dev->dev, PM_QOS_FLAG_NO_POWER_OFF)
== PM_QOS_FLAGS_ALL){
printk("DEBUG: %d : %s\n", __LINE__, __func__); /* my debug code */
return -EAGAIN;
}
据我了解,
我不知道为什么函数dev_pm_qos_flags()返回PM_QOS_FLAGS_ALL在我的情况下,任何人都可以解释这个?这是一个错误吗?因为EAGAIN是由pm qos NO_POWER_OFF设置引起的,所以这不是usb端口系统pm的错误。