Re: 2.6.0-test2 has i8042 mux problems

From: Andries Brouwer (aebr@win.tue.nl)
Date: Tue Jul 29 2003 - 19:25:08 EST


On Tue, Jul 29, 2003 at 03:51:04PM -0700, dean gaudet wrote:

> i've got a box on which 2.4.x works fine, but 2.6.0-test2 gets into a snit
> when it's trying to initialize the i8042. i can get 2.6.0-test2 to boot
> if i add "i8042_nomux".

> this system has an ali1563 (it's a development board for a new processor).
>
> serio/i8042.c: d3 -> i8042 (command) [61]
> serio/i8042.c: f0 -> i8042 (parameter) [61]
> serio/i8042.c: 0f <- i8042 (return) [61]
> serio/i8042.c: d3 -> i8042 (command) [107]
> serio/i8042.c: 56 -> i8042 (parameter) [107]
> serio/i8042.c: a9 <- i8042 (return) [107]
> serio/i8042.c: d3 -> i8042 (command) [154]
> serio/i8042.c: a4 -> i8042 (parameter) [154]
> serio/i8042.c: ee <- i8042 (return) [154]
> i8042.c: Detected active multiplexing controller, rev 1.1.

The controller follows the synaptics mux protocol.

> serio/i8042.c: 90 -> i8042 (command) [248]
> serio/i8042.c: a8 -> i8042 (command) [264]
> serio/i8042.c: 91 -> i8042 (command) [279]
> serio/i8042.c: a8 -> i8042 (command) [295]
> serio/i8042.c: 92 -> i8042 (command) [311]
> serio/i8042.c: a8 -> i8042 (command) [326]
> serio/i8042.c: 93 -> i8042 (command) [342]
> serio/i8042.c: a8 -> i8042 (command) [357]

Enable all Aux devices.
Start investigating the first one.

> serio/i8042.c: 90 -> i8042 (command) [436]
> serio/i8042.c: f2 -> i8042 (parameter) [436]
> serio/i8042.c: fe <- i8042 (interrupt, aux0, 12, timeout) [480]
> serio/i8042.c: 90 -> i8042 (command) [501]
> serio/i8042.c: ed -> i8042 (parameter) [501]
> serio/i8042.c: fe <- i8042 (interrupt, aux0, 12, timeout) [544]

No keyboard.

> serio/i8042.c: 90 -> i8042 (command) [629]
> serio/i8042.c: f2 -> i8042 (parameter) [629]
> serio/i8042.c: fe <- i8042 (interrupt, aux0, 12, timeout) [673]

No mouse.
Only a port.

> serio: i8042 AUX0 port at 0x60,0x64 irq 12

Start investigating the second one. Same results.

> serio: i8042 AUX1 port at 0x60,0x64 irq 12

Start investigating the third one.

> serio/i8042.c: 92 -> i8042 (command) [1168]
> serio/i8042.c: f2 -> i8042 (parameter) [1168]
> serio/i8042.c: fe <- i8042 (interrupt, aux2, 12, bad parity) [1206]
> atkbd.c: frame/parity error: 02

This time the keyboard is really unhappy.
The kernel asks for resend. I think invoking undefined behaviour.

...
> serio/i8042.c: 92 -> i8042 (command) [3242]
> serio/i8042.c: fe -> i8042 (parameter) [3242]
> serio/i8042.c: fe <- i8042 (interrupt, aux2, 0, bad parity) [3274]
> atkbd.c: frame/parity error: 02
> serio/i8042.c: 92 -> i8042 (command) [3305]
> serio/i8042.c: fe -> i8042 (parameter) [3305]

And then the kernel crashes...
[with an interesting interrupt within interrupt crash, to be looked at]

> drivers/inp<1>Unable to handle kernel NULL pointer dereference at virtual address 0000001d

[Since you have some new experimental board, I wonder:

My docs - the numbering has changed, but today it is
 http://www.win.tue.nl/~aeb/linux/kbd/scancodes-8.html#kcc90
know about the commands 90-93 as Synaptics prefixes,
but also about the commands 90-9f that set certain lines
(on VIA chipsets).

Do you know anything about the innards? Is it supposed to follow
this Synaptics protocol?]

Do things go slightly better if you comment out the line
        serio_write(serio, ATKBD_CMD_RESEND);
in atkbd.c?

Andries

-
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/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:43 EST