#4223 BLOC MP Star: Spinlock lockup on resume

Zarro Boogs per Child bugtracker at laptop.org
Thu Oct 18 04:41:55 EDT 2007


#4223: Spinlock lockup on resume
----------------------+-----------------------------------------------------
  Reporter:  cjb      |       Owner:  dilinger
      Type:  defect   |      Status:  new     
  Priority:  blocker  |   Milestone:  MP Start
 Component:  kernel   |     Version:          
Resolution:           |    Keywords:          
  Verified:  0        |  
----------------------+-----------------------------------------------------

Comment(by wmb at firmworks.com):

 http://dev.laptop.org/~wmb/q2d01a.rom

 When suspending, it checksums all physical memory above 1M and saves the
 answer at a location below 1M.  On resume, it does it again, and if there
 is a mismatch, it starts OFW instead of completing the resume.  OFW
 notices that this has happened and displays

   Interacting due to botched resume

 on the screen (and serial) in red letters, and gives you an ok prompt.
 Also, if you have a serial console, you will see an 'x' after the +r in
 the failing case.

 You can test this from OFW as follows:
 {{{
 ok s
 <wait a couple of seconds and hit the power button>
 Interacting due to botched resume
 ok
 }}}
 The failure is because the low-level suspend path in OFW doesn't turn off
 the USB host controller on the way down (Linux does, I hope!), so the USB
 DMA region tends to change value.

 To see it work, do this:

 {{{
 ok usb-quiet
 ok s
 <wait a couple of seconds and hit the power button>
 ok
 }}}

 Here is an example of it working in Linux (this is from the serial port):

 {{{
 ok boot
 ....

 -bash-3.2# echo mem >/sys/power/state
 [  139.604469] Stopping tasks ... done.
 [  139.633939] Suspending console(s)
 +r[  139.715983] olpc_do_sleep!
 [    1.518107] usb usb1: root hub lost power or was reset
 [    1.739354] usb usb2: root hub lost power or was reset
 [    1.959513] usb_reset_device!
 [    2.020695] hub_port_wait_reset: portstatus=503 portchange=10
 [    2.140809] hub_port_wait_reset: portstatus=503 portchange=10
 [    2.232579] USB_REQ_SET_CONFIGURATION!
 [    2.360068] Restarting tasks ... done.
 -bash-3.2#
 }}}

-- 
Ticket URL: <https://dev.laptop.org/ticket/4223#comment:9>
One Laptop Per Child <https://dev.laptop.org>
OLPC bug tracking system



More information about the Bugs mailing list