Richard Curnow wrote:

One problem I'm hitting is in EHCI, I was wondering if you had any ideas as to what I could start looking at, annotating etc to debug this. The problem seems to be here:

static inline void list_del(struct list_head *entry)
{
        __list_del(entry->prev, entry->next);      <<<<<======= HERE
        entry->next = LIST_POISON1;
        entry->prev = LIST_POISON2;
}

Hmm, I'll have to look at this some more. Some folk have been reporting list_del() problems for QTDs on SMP hardware; in fact there's now a bug on this at bugme.osdl.org and you might be hitting something similar.

Also, some folk working on an embedded EHCI have reported that
there's a bit of an issue in the restart-after-halt logic ...
adding a small delay between modifying the QH and clearing the
HALT bit would help when the controller can read "halt cleared"
but associate that with the pre-modification QH contents.


BTW the scenario I'm using to trigger this is to plug an external USB2
hard disk into a USB2 PCI card and run e2fsck on one of its partitions.
Note that the following things appear to work OK:

Back when I was doing regular EHCI testing, e2fsck was one of the checks I used. Also mkfs, preferably with badblocks ... those two things were the best ways to throw deep irregular I/O queues, often with some faults (badblocks!) at an EHCI controller.

- Dave





-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to