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