cvs commit: src/sys/dev/misc/kbd

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Dec 16 00:31:04 PST 2004


dillon      2004/12/16 00:30:15 PST

DragonFly src repository

  Modified files:
    sys/dev/misc/kbd     kbd.c 
  Log:
  Fix the keyboard lockup problem.  There were two big clues:  The first was a
  report that it sometimes seemed to occur during heavy video operations.  The
  second was a set of kernel dates from Jansen Gotis and Michael Powell that
  focused me in on the right part of the code.
  
  Simply put, there is a hack for AT keyboards that polls the keyboard for
  data 10 times a second in order to catch lost interrupts.  Lost interrupts
  can occur because unlike other interrupts the AT keyboard interrupt is
  edge-triggered.  This means that latency in the system can cause the
  keyboard interrupt to retrigger before it is reenabled after an earlier
  event but not cause any further interrupts.
  
  There is a big hack in the system that polls for keyboard data 10 times a
  second in order to detect this 'lost' interrupt case.  However, that code
  was broken by the timeout->callout work I did on September 19th.  An
  incorrectly placed callout_reset() stopped the polling code in its tracks.
  
  Reported-by: Jeroen Ruigrok/asmodai <asmodai at xxxxxx>,
  		Chris Pressey <cpressey at xxxxxxxxxxxxxxx>,
  		Michael Powell <nightrecon at xxxxxxxxxxx>,
  		Jansen Gotis <jtgotis at xxxxxxxxx>,
  		And others.
  
  Revision  Changes    Path
  1.14      +2 -2      src/sys/dev/misc/kbd/kbd.c


http://www.dragonflybsd.org/cvsweb/src/sys/dev/misc/kbd/kbd.c.diff?r1=1.13&r2=1.14&f=u





More information about the Commits mailing list