git: kernel/syscons - Fix excessive cpu latency during scrolling

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jun 19 09:30:02 PDT 2015


commit 7ae6dbf032d21ff5d054ee0841f774c177c59523
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Jun 19 09:21:55 2015 -0700

    kernel/syscons - Fix excessive cpu latency during scrolling
    
    * Scrolling a high-resolution (e.g. 4K monitor) kms console with the syscons
      spinlock held can prevent the cpu from being able to service interrupts
      for very long periods of time, enough to cause clicking and other audio
      issues.
    
    * The previous hack tried to fix this by allowing yields inside the render
      loop, but this was not stable and did not completely solve the clicking.
    
    * The new solution is to shove large screen updates off to a cothread which
      will then run the update lockless, allowing interrupts.  Minor frame buffer
      corruption can occur during scrolling but will be quickly cleaned up.
    
      This feature is disabled if the system is in the middle of a panic or
      shutdown.

Summary of changes:
 sys/dev/misc/syscons/sckmsrndr.c |  17 +---
 sys/dev/misc/syscons/scmouse.c   |   8 +-
 sys/dev/misc/syscons/scvgarndr.c |  16 ++--
 sys/dev/misc/syscons/syscons.c   | 192 +++++++++++++++++++++++----------------
 sys/dev/misc/syscons/syscons.h   |  14 +--
 5 files changed, 137 insertions(+), 110 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7ae6dbf032d21ff5d054ee0841f774c177c59523


-- 
DragonFly BSD source repository



More information about the Commits mailing list