#12556 HIGH 13.2.0: XO-4 mouse cursor corrupt after display-off suspend

Zarro Boogs per Child bugtracker at laptop.org
Tue Apr 2 13:47:51 EDT 2013


#12556: XO-4 mouse cursor corrupt after display-off suspend
------------------------------------+---------------------------------------
           Reporter:  tomyin        |       Owner:  jnettlet     
               Type:  defect        |      Status:  new          
           Priority:  high          |   Milestone:  13.2.0       
          Component:  kernel        |     Version:  not specified
         Resolution:                |    Keywords:               
        Next_action:  add to build  |    Verified:  0            
Deployment_affected:                |   Blockedby:               
           Blocking:                |  
------------------------------------+---------------------------------------
Changes (by dsd):

  * next_action:  diagnose => add to build
  * component:  x window system => kernel
  * milestone:  13.1.0 => 13.2.0


Comment:

 The interesting thing from the above results is that it is actually hard
 to make the cursor corruption happen. Only one experiment reproduces it -
 having the dcon asleep over suspend/resume.

 Digging further...

 fb blanking does not seem to destroy the hardware cursor data (I checked
 with a further experiment). So it is not exactly clear why the cursor
 save/restore is done in the fb blank/unblank codepath.

 Suspend/resume *does* destroy the hardware cursor data, so we do need to
 save and restore it here. On our other platforms, this happens in
 suspend/resume handlers, but the pxa168fb driver on XO-4 has no
 suspend/resume codepath. Instead, it relies on the fb being
 blanked/unblanked over suspend/resume.

 When the dcon driver switches from CPU to DCON, as it does when going into
 suspend with the screen on, the dcon driver does ask the FB to blank, and
 the opposite during DCON-to-CPU on resume, hitting the cursor save/restore
 paths mentioned above. Good.

 When the dcon driver is put to sleep, it doesn't do anything with fb
 state. When the system then suspends, the dcon driver doesn't do anything,
 since the dcon is asleep. So in this particular case we do not touch the
 fb blank state over suspend/resume, meaning that we don't save/restore the
 cursor.

 There are 2 questionable items here, fixing either one should solve the
 problem:
  1. pxa168fb does cursor save/restore during blank/unblank, however the
 blank/unblank operations do not actually destroy the cursor data in
 memory. Suspend/resume is what kills the cursor data in memory, so having
 cursor save/restore done in suspend/resume PM handlers would seem more
 sensible. Added a FIXME in arm-3.5 f510ff4.
  2. DCON driver generally goes to some lengths to turn the framebuffer off
 when framebuffer output is not shown on screen, but it does not do this in
 the DCON sleep (total display poweroff) case. Fixed in arm-3.5 8e2e2e1c2.

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


More information about the Bugs mailing list