#1710 BLOC Untriag: EC blocks for long periods while processing game buttons

Zarro Boogs per Child bugtracker at laptop.org
Thu Jun 14 05:25:14 EDT 2007

#1710: EC blocks for long periods while processing game buttons
 Reporter:  rsmith   |       Owner:  David.Lin
     Type:  defect   |      Status:  new      
 Priority:  blocker  |   Milestone:  Untriaged
Component:  distro   |     Version:           
 Keywords:           |    Verified:  0        
 The EC blocks for long periods when the game keys are pressed.  I have
 seen as much as 150mS but 90mS is typical.

 This blocking period happens when the key is first depressed.  So on
 resume from a host CPU suspend to ram if the key bounces or is pressed
 twice quickly the EC will block the processing of commands issued to it
 from the kernel and cause the kernel to issue an EC command timeout

 Please refer to the attached scope trace of a resume function and the
 processing of EC command 0x24 (Wake WLAN). When the game key is pressed
 twice very quickly.

 To understand this trace you need to know:

 I hijacked the Battery L0 and L1 signals from the EC and used them as
 debug flags.

 Channel 4 (Green) markes the time from which an LPC interrupt happens to
 when the IBF flag gets clear.  The LPC interrupt handler sets this bit low
 and then the main loop code that actually does the processing clears IBF
 and sets this bit high.

 Channel 2 (Blue) is the duration of the function that processes the game
 buttons. Upon entry into the function the bit is set low and when it exits
 the bit is set high.  This function is called every 10mS to check for game
 key presses.

 Channel 1 (yellow) is the WLAN wake up signal.  When this signal is
 strobed low the 0x24 command is complete.

 Channel 3 (purple) is the MAIN_ON signal to the CPU core voltage.

 So what happends here is:

 - The host CPU is in suspend.. MAIN_ON is low... The user presses the game
 button twice in rapidly.
 - The EC detects that a game button has been pressed.  It blocks in the
 game button processing function for about 95mS.  Then the 2nd game button
 press happens.
 - Inbetween the 2 game key presses the EC code issues the wakup SCI to the
 - Main on is enabled and the host starts to process the resume path
 - 25mS after resume was started the kernel issues a EC cmd 0x24 to wakeup
 the WLAN.
 - The EC however is still processing the game buttons.  After 60mS the
 game button function exits
 - The main loop then processes the 0x24 command and the WLAN wake signal
 is asserted

 The net result is that the kernel has to wait 60mS until it can issue the
 next command to the EC.

Ticket URL: <http://dev.laptop.org/ticket/1710>
One Laptop Per Child <http://laptop.org/>

More information about the Bugs mailing list