Re: [linux-usb-devel] 2.6.19-rc1-mm1 - locks when using "dd bs=1M"from card reader

From: Helge Hafting
Date: Fri Oct 20 2006 - 07:47:54 EST


Alan Stern wrote:
[...]
After looking at the debugging output, no. That "invalid opcode" is a red herring. What you encountered this time was a BUG() in the source code of start_unlink_async() in drivers/usb/host/ehci-q.c:

#ifdef DEBUG
assert_spin_locked(&ehci->lock);
if (ehci->reclaim
|| (qh->qh_state != QH_STATE_LINKED
&& qh->qh_state != QH_STATE_UNLINK_WAIT)
)
BUG ();
#endif

You could try putting a printk() just before the BUG() to display the values of ehci->reclaim and qh->qh_state. Maybe also change the BUG() to
ehci->reclaim=0
qh->qh_state=5
WARN(), which might help prevent your system from crashing so badly.
WARN didn't help much. I then got the warning twice, followed by
another BUG:
process klogd
ehci_irq
usb_hcd_irq
handle_IRQ_event
handle_fasteio_irq
do_IRQ

So I set it back to BUG. Crashing hard isn't so bad when I
know what is coming - I simply remount everything synchronously
before trying.

I hope these printk's help. I can add more of them too, if needed.
Big transfers seems to bring out the worst - I always get the
crash on the first megabyte now.

During boot I get lots of those "Hardware error, end-of-data detected"
messages, but I've never seen it crash during bootup.

Helge Hafting
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/