#2401 BLOC Trial-2: Wakeup event is repeated continuously
Zarro Boogs per Child
bugtracker at laptop.org
Wed Aug 1 16:18:30 EDT 2007
#2401: Wakeup event is repeated continuously
----------------------+-----------------------------------------------------
Reporter: cjb | Owner: dilinger
Type: defect | Status: new
Priority: blocker | Milestone: Trial-2
Component: kernel | Version: Git as of bug date
Resolution: | Keywords:
Verified: 0 |
----------------------+-----------------------------------------------------
Comment (by dilinger):
Here's what the i8042 driver sees. Normally when you hit a gamekey, you
get 4 interrupts:
{{{
Aug 1 19:59:35 localhost kernel: [ 671.864765]
drivers/input/serio/i8042.c: e0
<- i8042 (interrupt, 0, 1) [65598]
Aug 1 19:59:35 localhost kernel: [ 671.864879]
drivers/input/serio/i8042.c: 66 <- i8042 (interrupt, 0, 1) [65598]
Aug 1 19:59:35 localhost kernel: [ 671.906417]
drivers/input/serio/i8042.c: e0 <- i8042 (interrupt, 0, 1) [65602]
Aug 1 19:59:35 localhost kernel: [ 671.906520]
drivers/input/serio/i8042.c: e6 <- i8042 (interrupt, 0, 1) [65602]
}}}
e0, 66 <- key down
e0, e6 <- key up
When we get those errors, we're losing bytes:
{{{
e0 <- i8042 (interrupt, 0, 1) [88540]
Aug 1 20:03:25 xo-03-55-81 kernel: [ 901.215424]
drivers/input/serio/i8042.c:
66 <- i8042 (interrupt, 0, 1) [88540]
Aug 1 20:03:25 xo-03-55-81 kernel: [ 901.256872]
drivers/input/serio/i8042.c:
e0 <- i8042 (interrupt, 0, 1) [88543]
Aug 1 20:03:25 xo-03-55-81 kernel: [ 901.256985]
drivers/input/serio/i8042.c:
66 <- i8042 (interrupt, 0, 1) [88543]
Aug 1 20:03:25 xo-03-55-81 kernel: [ 901.274913]
drivers/input/serio/i8042.c:
e0 <- i8042 (interrupt, 0, 1) [88546]
Aug 1 20:03:25 xo-03-55-81 kernel: [ 901.275025]
drivers/input/serio/i8042.c:
e6 <- i8042 (interrupt, 0, 1) [88546]
[ 904.391887] olpm-pm: SCI 0x2 received
[ 904.396672] olpm-pm: SCI 0x0 received
[ 904.580782] Waited 100 ms for IBF during cmd 0x11!
[ 904.867934] atkbd.c: Unknown key released (translated set 2, code 0xe0
on isa
0060/serio0).
[ 904.876214] atkbd.c: Use 'setkeycodes e060 <keycode>' to make it known.
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.391887] olpm-pm: SCI 0x2
received
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.396672] olpm-pm: SCI 0x0
received
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.580782] Waited 100 ms for IBF
during
cmd 0x11!
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.587786]
drivers/input/serio/i8042.c:
e0 <- i8042 (interrupt, 0, 1) [88877]
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.867864]
drivers/input/serio/i8042.c:
e0 <- i8042 (interrupt, 0, 1) [88905]
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.867934] atkbd.c: Unknown key
released
(translated set 2, code 0xe0 on isa0060/serio0).
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.876214] atkbd.c: Use
'setkeycodes e06
0 <keycode>' to make it known.
Aug 1 20:03:28 xo-03-55-81 kernel: [ 904.882985]
drivers/input/serio/i8042.c:
66 <- i8042 (interrupt, 0, 1) [88907]
...
e0 <- i8042 (interrupt, 0, 1) [88944]
Aug 1 20:03:29 xo-03-55-81 kernel: [ 905.256612]
drivers/input/serio/i8042.c:
66 <- i8042 (interrupt, 0, 1) [88944]
Aug 1 20:03:29 xo-03-55-81 kernel: [ 905.305713]
drivers/input/serio/i8042.c:
e0 <- i8042 (interrupt, 0, 1) [88949]
Aug 1 20:03:29 xo-03-55-81 kernel: [ 905.305825]
drivers/input/serio/i8042.c:
e6 <- i8042 (interrupt, 0, 1) [88949]
Aug 1 20:03:29 xo-03-55-81 kernel: [ 905.562273] olpm-pm: SCI 0x2
received
Aug 1 20:03:29 xo-03-55-81 kernel: [ 905.568435] olpm-pm: SCI 0x0
received
}}}
At that point, the ebook reader is continuing to scroll down without any
interrupts showing up.
e0, 66, e0, 66 <- holding the gamekey down
e0, e6 <- key up
SCIs received, 100ms of interrupts being disabled
atkbd complains about unknown key press; e0
another SCI, another 100ms of interrupts being disabled
e0, 66 <- key down
...
e0, 66 <- key down
e0, e6 <- key up
We've lost some key presses there. That is somehow confusing the ebook
reader. The ebook reader probably should not get confused (since we *do*
end on a key down event); it should skip the mangled bits and properly
process the final keypress(es).
We also need to not be dropping key presses. Either we're losing
interrupts due to the EC cmd function keeping interrupts disabled for so
long, or the EC is mangling the bytes that it's sending up to us when it
attempts to both stuff bytes into the LPC bus and respond to EC commands.
--
Ticket URL: <http://dev.laptop.org/ticket/2401#comment:7>
One Laptop Per Child <http://laptop.org/>
More information about the Bugs
mailing list