On Tue, 30 Jan 2007, Dominik Brodowski wrote:
> > There may not be anything we can do about a rogue BIOS, other than to
> > avoid suspending the controller at all.
> >
> > Just to make sure, try this: In ehci-hub.c, near the end of
> > ehci_bus_suspend(), print out the value returned by ehci_halt(). If it is
> > 0 then we will know that the controller does get suspended correctly and
> > something (the BIOS?) starts it up for no good reason.
>
> + ret = ehci_halt (ehci);
> + printk(KERN_INFO "ehci_halt in ehci_bus_suspend returns %d\n", ret);
>
> Jan 30 18:05:54 [kernel] [ 23.918690] ehci_halt in ehci_bus_suspend returns > 0
> ...
> Jan 30 18:05:54 [kernel] [ 24.570171] cs: IO port probe
> 0x800-0x8ff:<6>ehci_hcd 0000:00:1d.7: STS_FLR - clearing. status: 0x2008 intr
> 0x3f (0x37
Yep, no question about it. Something (probably the BIOS) is restarting
the controller and turning on the FLR interrupt mask bit.
> Well, if we notice it has been awakened by the BIOS could we call the
> resume() routines as a workaround?
We don't have a process context handy in which to do that. Also I'm not
sure it would work; the resume routine expects the controller to be
suspended, not already running. And what's the point of suspending, being
woken up a few seconds later, suspending again, getting woken up again,
... ad infinitum?
Better simply to avoid trying to suspend the controller in the first
place. There are patches under discussion to make that sort of thing
easier. For now you can try doing this:
Edit drivers/usb/core/usb.h and change the definition of
USB_AUTOSUSPEND_DELAY to (HZ*60).
Add to your /etc/rc.d/rc.local (or someplace equivalent) a
line saying:
echo disabled >/sys/bus/usb/devices/usb1/power/wakeup
Increasing the initial autosuspend delay to 60 seconds will give the
system a chance to run rc.local, and disabling remote wakeup on the
controller will then prevent it from being autosuspended.
Alternatively, since you don't have any high-speed USB devices attached,
you could simply prevent ehci-hcd from being loaded in the first place.
That would certainly solve the problem. :-)
Alan Stern
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel