Random input/output errors with /dev/cdc-wdm* in kernel 4.9.7

Bjørn Mork bjorn at mork.no
Thu Feb 2 12:57:23 UTC 2017

Kasper Holtze <kasper at holtze.dk> writes:

> Hello,
> After upgrading Linux from 4.4.8 to 4.9.7, I'm seeing some strange
> issues connecting to my modems. The modem is Sierra MC7304, in QMI
> mode.
> As it happened after upgrading the kernel, I'm not sure if it is
> directly related to libqmi.. Could be the qmi_wwan driver?
> I see the issues with both qmicli and my custom software.
> libqmi is version 1.16.2.
> Usually it works fine when the system is first booted, or the modems
> are reset. After a while, I'm getting i/o errors reading from
> /dev/cdc-wdm*:
> Sometimes it just hangs, most of the times I get this message:
> Qmi-WARNING **: Error reading from istream: Error reading from file
> descriptor: Input/output error
> I have enabled debugging in debugfs, and get this in the syslog:
> [ 5664.134111] wdm_open: qmi_wwan 1-1.3:1.8: draining queued data
> [ 5664.134778] wdm_in_callback: qmi_wwan 1-1.3:1.8: nonzero urb status
> received: -EPIPE
> [ 5664.136365] wdm_int_callback: qmi_wwan 1-1.3:1.8:
> NOTIFY_RESPONSE_AVAILABLE received: index 8 len 0
> [ 5664.136390] wdm_int_callback: qmi_wwan 1-1.3:1.8: submit response URB 0
> [ 5664.136903] wdm_in_callback: qmi_wwan 1-1.3:1.8: nonzero urb status
> received: -EPIPE
> [ 5664.137551] wdm_release: qmi_wwan 1-1.3:1.8: wdm_release: cleanup

Not good.  This is a mess, and I can only admit that I have completely
lost track of how it is supposed to work....

I wonder if you are able to test a cdc-wdm/qmi-wwan driver with these
two commits reverted one-by-one? :

  c1da59dad0eb ("cdc-wdm: Clear read pipeline in case of error")
  833415a3e781 ("cdc-wdm: fix "out-of-sync" due to missing notifications")

That's sort of a quick "bisect".  A full bisect would achieve the same,
but I don't think it will provide more info.  I am pretty sure the
problem is caused by one (or both) of those two commits which both went
into v4.9.

Let me know if you need more details on how to do this.


More information about the libqmi-devel mailing list