Re: Scheduling while atomic (2.6.10-rc3-bk13)

From: David Brownell
Date: Mon Dec 20 2004 - 14:53:36 EST


On Monday 20 December 2004 10:48 am, Greg KH wrote:

>
> David, it looks like you grab a spinlock, and then call msleep(20);
> which causes this warning.
>
> Care to fix it?

How bizarre ... I must have been tested that without spinlock
debugging, for some reason. Grr. I usually leave that on,
just to prevent stuff like this.

Here's a quick'n'dirty patch, msleep --> mdelay. I'd rather
not mdelay for that long, but this late in 2.6.10 it's safer.
(And this is also what OHCI does in that same code path.)

- Dave

--- 1.43/drivers/usb/host/ehci-hub.c Fri Dec 17 18:57:39 2004
+++ edited/drivers/usb/host/ehci-hub.c Mon Dec 20 11:48:01 2004
@@ -122,7 +122,7 @@
writel (temp, &ehci->regs->port_status [i]);
}
i = HCS_N_PORTS (ehci->hcs_params);
- msleep (20);
+ mdelay (20);
while (i--) {
temp = readl (&ehci->regs->port_status [i]);
if ((temp & PORT_SUSPEND) == 0)