Hi David,

We're working on porting Linux 2.6 to sh64 (even though sh64 has been in
2.4 for some time, it got added after 2.5 forked off so there's a lot of
ground to catch up to get 2.6 working now.)

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;
}

when entry->prev == LIST_POISON2 and entry->next == LIST_POISON1 when
called from

                if (stopped && qtd->qtd_list.prev != &qh->qtd_list) {
                        last = list_entry (qtd->qtd_list.prev,
                                        struct ehci_qtd, qtd_list);
                        last->hw_next = qtd->hw_next;
                }
                list_del (&qtd->qtd_list);    <<<<<========== HERE
                last = qtd;

in qh_completions.

The backtrace is:
Call Trace:
[<a01fa100>] qh_completions+0x2c0/0x420
[<a01fba80>] scan_async+0x140/0x320
[<a02002f4>] ehci_work+0x94/0x1c0
[<a0200594>] ehci_irq+0x174/0x1a0
[<a01e6a2c>] usb_hcd_irq+0x4c/0xc0
[<a00118fc>] handle_IRQ_event+0x9c/0x160
[<a0011cf0>] do_IRQ+0x130/0x220
IRQ
[<a000b814>] default_idle+0x74/0x140
[<a0344aec>] start_kernel+0x30c/0x340

The kernel is not built with pre-empt; we want to get stability without
that first.  Also, sh64 has no notion of SMP to date, so there are all
kinds of locking issues we didn't have to worry about in 2.4 but will
have to with pre-empt when we get to it.  Perhaps it's something around
that area which is causing this problem.

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:

- the console messages when the drive is plugged in (partition list etc)
- fdisk -l on the drive
- e2fsck when the drive is connected to a USB1.1 card and run through
  OHCI (pitifully slow of course.)

Any ideas for experiments we could try would be much appreciated.  (I
have pretty much no EHCI knowledge right now, but probably will have
soon :-) )

Cheers
Richard

-- 
Richard \\\ SH-4/SH-5 Core & Debug Architect
Curnow  \\\         SuperH (UK) Ltd, Bristol


-------------------------------------------------------
This SF.Net email is sponsored by the new InstallShield X.
>From Windows to Linux, servers to mobile, InstallShield X is the
one installation-authoring solution that does it all. Learn more and
evaluate today! http://www.installshield.com/Dev2Dev/0504
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to