Messages in this thread Patch in this message | | | Date | Tue, 4 Mar 2008 19:53:33 +0100 (CET) | From | Christian Kujau <> | Subject | Re: WARNING: at drivers/usb/host/ehci-hcd.c:287 |
| |
On Tue, 4 Mar 2008, Alan Stern wrote: > How about replacing the > > WARN_ON(!ehci->reclaim); > > line in ehci_iaa_watchdog() with > > if (unlikely(!ehci->reclaim || > !HC_IS_RUNNING(ehci_to_hcd(ehci)->state) || > timer_pending(&ehci->iaa_watchdog)) > goto done; > > where "done:" is added just before the spin_unlock_irqrestore?
I'm not sure, but do you mean:
--- linux-2.6/drivers/usb/host/ehci-hcd.c 2008-02-24 22:25:54.000000000 +0100 +++ linux-2.6/drivers/usb/host/ehci-hcd.c.edited 2008-03-04 19:46:13.000000000 +0100 @@ -284,7 +284,10 @@ static void ehci_iaa_watchdog(unsigned l u32 status, cmd;
spin_lock_irqsave (&ehci->lock, flags); - WARN_ON(!ehci->reclaim); + if (unlikely(!ehci->reclaim || + !HC_IS_RUNNING(ehci_to_hcd(ehci)->state) || + timer_pending(&ehci->iaa_watchdog)) + goto done;
status = ehci_readl(ehci, &ehci->regs->status); cmd = ehci_readl(ehci, &ehci->regs->command);
Thanks, Christian. -- BOFH excuse #189:
SCSI's too wide.
| |