lkml.org 
[lkml]   [2004]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectToshiba laptop keyboard lockup/freezing revisited
From
Hello,

A few months ago there were some posts about an issue where the keyboard
would lockup (seemingly at random) on some systems (I specifically recall
Toshiba Satellite laptops being susceptible).

This started happening somewhere around kernel 2.6.5. I also experience
this in 2.6.7 on my Toshiba Satellite S173 (but never in 2.4).

When it would happen, I was usually able to get the keyboard back by
hitting various combinations of left-shift + F2. The lockup would happen
both in and out of X. The easiest way I found to reproduce it is to just
go in a console and rapidly mash keys including the left shift key. The
message I get in syslog when it happens is this:

input: AT Translated Set 2 keyboard on isa0060/serio0

Digging into this a bit, I found one change that seemed to be most related
to the bug. The change was to the interrupt handler in
drivers/input/serio.c:

@@ -195,6 +195,9 @@
ret = serio->dev->interrupt(serio, data, flags, regs);
} else {
if (!flags) {
+ if ((serio->type == SERIO_8042 ||
+ serio->type == SERIO_8042_XL) && (data !=
0xaa))
+ return ret;
serio_rescan(serio);
ret = IRQ_HANDLED;
}

I sprinkled some printk()'s around and saw that it was sometimes getting
"data = 0xab" when the lockup would occur.

I don't fully understand this code since I didn't dig into it too deeply,
but I was able to eliminate the lockups for myself by adding "&& (data !=
0xab)" in addition to checking for 0xaa to that line. I'm thinking that
0xaa and/or 0xab might be related to the scan-code sequences for the
left-shift key break-code, but I couldn't really find definitive
documentation on this stuff. Somewhere I read that 0xaa means that a
self-test has passed in addition to being the break code for left-shift.

Note that Toshiba Satellite keyboards have been known to have problems in
the past, so this may very well be a hardware bug.

Thoughts from anyone who worked on the serio or i8042 driver? Or anyone
else who has seen this problem?

Please CC replies to me as I am not subscribed to the list.

--
Nate Case <nacase@wisc.edu>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:05    [W:0.190 / U:0.460 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site