driver's tasklets stop being executed - how to debug?

From: Tilman Schmidt
Date: Sun Oct 22 2006 - 15:53:03 EST


I would like some advice on how to debug a strange problem with
the Gigaset ISDN driver (drivers/isdn/gigaset). All of a sudden,
both data streams as well as the input control stream experience
over/underruns:

bas_gigaset: isochronous write buffer underrun
bas_gigaset: isochronous read overrun, dropped URB with status: success, 64 bytes lost
bas_gigaset: receive AT data overrun, 12 bytes lost

It looks as if my driver's tasklets aren't being executed anymore,
and it doesn't receive URB callbacks anymore, either.

As the tasklets have separate spinlocks for synchronization, I
think it somewhat unlikely (though of course not impossible) that
this is a locking issue.

Unfortunately, I can't reproduce the problem on any of my own
machines, and the reporter only observes it irregularly. So my
only chance is to add debugging output which would tell me, once
the problem happens again, enough about the system state in order
to figure out what's going on.

Therefore my questions:
- What could prevent a scheduled tasklet from executing?
- What could prevent an URB callback from being delivered?
- Is there a way to query the state of my tasklets and pending
URB callbacks in order to printk something that might provide
a clue when the problem strikes next time?

Thanks in advance for any hints.

--
Tilman Schmidt E-Mail: tilman@xxxxxxx
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Ungeoeffnet mindestens haltbar bis: (siehe Rueckseite)

Attachment: signature.asc
Description: OpenPGP digital signature