#9420 BLOC 1.5-F11: Crash on resume

Zarro Boogs per Child bugtracker at laptop.org
Wed Oct 28 15:09:58 EDT 2009


#9420: Crash on resume
--------------------------------+-------------------------------------------
           Reporter:  cjb       |       Owner:  dsaxena      
               Type:  defect    |      Status:  new          
           Priority:  blocker   |   Milestone:  1.5-F11      
          Component:  kernel    |     Version:  not specified
         Resolution:            |    Keywords:               
        Next_action:  diagnose  |    Verified:  0            
Deployment_affected:            |   Blockedby:               
           Blocking:            |  
--------------------------------+-------------------------------------------

Comment(by wmb at firmworks.com):

 One possibility is DRAM bitrot.  That can happen if the DRAMs are kicked
 out of self-refresh in the late stages of the hardware's entry-to-S3
 sequence.  Here's what happens:

 a) The OS initiates the enter-S3 sequence by writing 0x2400 to I/O port
 0x404 (that's standard ACPI procedure).

 b) The hardware puts the DRAMs in self-refresh mode and begins the power
 sequencing necessary to go to sleep.

 c) Before everything is asleep, a DMA cycle hits the memory controller,
 which forces the DRAMs to exit self-refresh mode.  Such a DMA cycle could
 come from any number of sources, including USB descriptor polling,
 graphics accelerator activity, display refresh, etc.

 d) The power eventually goes away from the CPU and memory controller, but
 the DRAMs are no long self-refreshing, so they lose data gradually during
 the sleeping period.

 In the OFW suspend test framework, the last thing I do before writing to
 I/O port 0x404 is to turn off the bus mastering enable bits in all of the
 PCI configuration headers, thus ensuring that those devices cannot issue
 DMA cycles.

-- 
Ticket URL: <http://dev.laptop.org/ticket/9420#comment:8>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list