#4981 BLOC Never A: Suspend can hang if SCI happens at the wrong time.
Zarro Boogs per Child
bugtracker at laptop.org
Fri Nov 16 16:46:03 EST 2007
#4981: Suspend can hang if SCI happens at the wrong time.
---------------------------------+------------------------------------------
Reporter: wmb at firmworks.com | Owner: wmb at firmworks.com
Type: defect | Status: new
Priority: blocker | Milestone: Never Assigned
Component: ofw - open firmware | Version:
Keywords: | Verified: 0
---------------------------------+------------------------------------------
Jordan Crouse pointed out that, if the 5536 sees a wakeup event after
interrupts are disabled but before the code tells the 5536 to turn off the
power, the power-off won't actually happen.
The result of this would be that the system gets stuck in an infinite loop
right after the "turn off the power instruction".
The fix for this it twofold:
a) The OFW suspend code should not loop indefinitely, but rather should
spin for a finite number of times (Jordan suggests 0xfff spins of a
"loopa" loop with a nop in the body), then if that loop finishes, turn the
memory back on and invoke the resume code.
b) The kernel should tell the EC that suspend is imminent, and the EC
should avoid generating wakeup events from a period of time thereafter,
thus giving the suspend sequence time to complete.
--
Ticket URL: <http://dev.laptop.org/ticket/4981>
One Laptop Per Child <http://dev.laptop.org>
OLPC bug tracking system
More information about the Bugs
mailing list