Messages in this thread Patch in this message | | | Date | Fri, 9 Apr 2004 18:30:38 +0200 (CEST) | From | Grzegorz Kulewski <> | Subject | Re: 2.6.5: keyboard lockup on a Toshiba laptop |
| |
On Fri, 9 Apr 2004, R. J. Wysocki wrote:
> On Wednesday 07 of April 2004 13:31, Grzegorz Kulewski wrote: > > Ok, that should be easy to debug... I hope :-) > > > > Try to apply this patch to check what kernel part call connect function > > too many times. (Maybe it is some power management stuff?) > > I've applied this and I've got something like this in the log after a (recent) > lockup: > > Apr 9 10:47:03 albercik kernel: Uniform CD-ROM driver Revision: 3.20 > Apr 9 10:47:03 albercik kernel: inserting floppy driver for 2.6.5 > Apr 9 10:47:03 albercik kernel: Floppy drive(s): fd0 is 1.44M > Apr 9 10:47:03 albercik kernel: FDC 0 is a post-1991 82077 > Apr 9 10:47:03 albercik kernel: SCSI subsystem initialized > Apr 9 10:51:11 albercik kernel: spurious 8259A interrupt: IRQ7. > Apr 9 15:00:24 albercik kernel: Call Trace: > Apr 9 15:00:24 albercik kernel: [<c0277b29>] atkbd_connect+0x19/0x420 > Apr 9 15:00:24 albercik kernel: [<c027adca>] serio_find_dev+0x6a/0x70 > Apr 9 15:00:24 albercik kernel: [<c027aee9>] serio_handle_events+0xc9/0x120 > Apr 9 15:00:24 albercik kernel: [<c027af85>] serio_thread+0x45/0x140 > Apr 9 15:00:24 albercik kernel: [<c0117a40>] default_wake_function+0x0/0x20 > Apr 9 15:00:24 albercik kernel: [<c027af40>] serio_thread+0x0/0x140 > Apr 9 15:00:24 albercik kernel: [<c0105285>] kernel_thread_helper+0x5/0x10 > Apr 9 15:00:24 albercik kernel: > Apr 9 15:00:24 albercik kernel: input: AT Translated Set 2 keyboard on > isa0060/serio0 > Apr 9 15:42:19 albercik kernel: Call Trace: > Apr 9 15:42:19 albercik kernel: [<c0277b29>] atkbd_connect+0x19/0x420 > Apr 9 15:42:19 albercik kernel: [<c027adca>] serio_find_dev+0x6a/0x70 > Apr 9 15:42:19 albercik kernel: [<c027aee9>] serio_handle_events+0xc9/0x120 > Apr 9 15:42:19 albercik kernel: [<c027af85>] serio_thread+0x45/0x140 > Apr 9 15:42:19 albercik kernel: [<c0117a40>] default_wake_function+0x0/0x20 > Apr 9 15:42:19 albercik kernel: [<c027af40>] serio_thread+0x0/0x140 > Apr 9 15:42:19 albercik kernel: [<c0105285>] kernel_thread_helper+0x5/0x10 > Apr 9 15:42:19 albercik kernel: > Apr 9 15:42:19 albercik kernel: input: AT Translated Set 2 keyboard on > isa0060/serio0 > Apr 9 15:58:36 albercik kernel: Call Trace: > Apr 9 15:58:36 albercik kernel: [<c0277b29>] atkbd_connect+0x19/0x420 > Apr 9 15:58:36 albercik kernel: [<c027adca>] serio_find_dev+0x6a/0x70 > Apr 9 15:58:36 albercik kernel: [<c027aee9>] serio_handle_events+0xc9/0x120 > Apr 9 15:58:36 albercik kernel: [<c027af85>] serio_thread+0x45/0x140 > Apr 9 15:58:36 albercik kernel: [<c0117a40>] default_wake_function+0x0/0x20 > Apr 9 15:58:36 albercik kernel: [<c027af40>] serio_thread+0x0/0x140 > Apr 9 15:58:36 albercik kernel: [<c0105285>] kernel_thread_helper+0x5/0x10 > Apr 9 15:58:36 albercik kernel: > > Here I had to reboot the machine.
So we can see that atkbd_connect is called several times (and it probably should not... - somebody correct me if I am wrong).
Apply attached patch to see what causes reconnection.
Grzegorz Kulewski --- /usr/src/linux-2.6.5/drivers/input/serio/serio.c.orig 2004-04-04 05:36:15.000000000 +0200 +++ /usr/src/linux-2.6.5/drivers/input/serio/serio.c 2004-04-09 18:28:50.268521936 +0200 @@ -166,6 +166,11 @@ static int serio_thread(void *nothing) static void serio_queue_event(struct serio *serio, int event_type) { struct serio_event *event; + + if (event_type == SERIO_RESCAN || event_type == SERIO_RECONNECT) { + printk(KERN_WARNING "serio: RESCAN || RECONNECT requested: %d!\n", event_type); + dump_stack(); + } if ((event = kmalloc(sizeof(struct serio_event), GFP_ATOMIC))) { event->type = event_type; | |