On Thu, Aug 12, David Brownell wrote:
> On Thursday 12 August 2004 4:26 am, Olaf Hering wrote:
> > On Tue, Jun 15, David Brownell wrote:
> >
> > > 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
>
> As you may have noticed, there aren't many calls to list_del()
> that relate to QTDs. I've not made time to investigate this
> problem, but here are two issues that I'm aware of:
>
> - It's possible smp_mb() is needed before dropping
> ehci->lock in ehci_urb_done() ... cache coherency
> rules relating to spinlocks are unclear to me.
> (Not documented anywhere I've noticed, either.)
This doesnt help.
> - In qh_completions() at the end, there's sometimes
> a call to qh_update() after fault cleanup. On one
> embedded platform, I've had a report about a
> race there, controller reading "old" values for
> other QH fields and then the "new" hw_token.
>
> Fix must involve a delay before updating the
> token, e.g. "next microframe" or maybe just
> a small udelay().
This patch cause a fail after 5 minutes, same place, but not a null
pointer.
I wonder, why has the ->dummy ehci_qtd struct no initialized list
pointers? The only place where the pointers can be zero is in
qh_append_tds(). Maybe this place needs a hard memory barrier, wmb() is
maybe not enough on x86_64. I will give it a try.
--- ./drivers/usb/host/ehci-q.c.kaputt 2004-08-31 14:21:51.794068000 +0200
+++ ./drivers/usb/host/ehci-q.c 2004-08-31 16:36:54.219007220 +0200
@@ -386,7 +386,10 @@ halt:
end = 0;
}
if (end)
+ {
+ udelay(10);
qh_update (ehci, qh, end);
+ }
}
return count;
--
USB is for mice, FireWire is for men!
sUse lINUX ag, nÃRNBERG
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idP47&alloc_id808&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel