2003-09-12 16:51:08

by Petr Vandrovec

[permalink] [raw]
Subject: Another keyboard woes with 2.6.0...

Hi Vojtech,
I have MicroStar MS-9211 box with connected to the KVM switch
MasterView CS-1016, which is connected to the some Chicony
keyboard. 2.4.x kernel works without problem, but when 2.6.0
starts, immediately after input device driver is initialized it starts
thinking that F7 key is held down, and it stays that way until
I hit some other key to stop autorepeat... What debugging I
can do for you to get rid of screen full of '^[[18~' ? /bin/login
continuously complains about username being too long :-(

dmesg, /proc/interrupts and lspci below. MS-9211 specs is
at http://www.msi.com.tw/program/products/server/svr/pro_svr_detail.php?UID=376,
CS-1016 switch is http://www.aten-usa.com/products/products.php?Item=CS1016,
Chicony keyboard is just Chicony keyboard...

And while we are talking about input devices, I assume that if I want
driver for frontpanel LCD & up/enter/next buttons, I'm the one who should
write it, yes?
Thanks,
Petr Vandrovec


Linux version 2.6.0-test5-c1283 (root@placatec) (gcc version 3.3.2 20030908 (Debian prerelease)) #4 SMP Fri Sep 12 00:09:01 CEST 2003
Video mode to be used for restore is f00
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009d400 (usable)
BIOS-e820: 000000000009d400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS)
BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f55f0
hm, page 000f5000 reserved twice.
hm, page 000f6000 reserved twice.
hm, page 000f1000 reserved twice.
hm, page 000f2000 reserved twice.
On node 0 totalpages: 262128
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 225280 pages, LIFO batch:16
HighMem zone: 32752 pages, LIFO batch:7
DMI 2.2 present.
ACPI: RSDP (v000 IntelR ) @ 0x000f7750
ACPI: RSDT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x3fff3000
ACPI: FADT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x3fff3040
ACPI: MADT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x3fff6d00
ACPI: DSDT (v001 INTELR AWRDACPI 0x00001000 MSFT 0x0100000c) @ 0x00000000
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:2 APIC version 20
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] disabled)
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] global_irq_base[0x0])
IOAPIC[0]: Assigned apic_id 2
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, IRQ 0-23
ACPI: INT_SRC_OVR (bus[0] irq[0x0] global_irq[0x2] polarity[0x0] trigger[0x0])
ACPI: INT_SRC_OVR (bus[0] irq[0x9] global_irq[0x9] polarity[0x1] trigger[0x3])
Enabling APIC mode: Flat. Using 1 I/O APICs
Using ACPI (MADT) for SMP configuration information
Building zonelist for node : 0
Kernel command line: auto BOOT_IMAGE=Linux ro root=2101
Initializing CPU#0
PID hash table entries: 4096 (order 12: 32768 bytes)
Detected 2391.541 MHz processor.
Console: colour VGA+ 80x25
Memory: 1032404k/1048512k available (2555k kernel code, 15172k reserved, 1356k data, 368k init, 131008k highmem)
Calibrating delay loop... 4718.59 BogoMIPS
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: bfebfbff 00000000 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 00000000 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Hyper-Threading is disabled
CPU: After all inits, caps: bfebfbff 00000000 00000000 00000080
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU#0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#0: Thermal monitoring enabled
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
CPU0: Intel(R) Pentium(R) 4 CPU 2.40GHz stepping 07
per-CPU timeslice cutoff: 1462.88 usecs.
task migration cache decay timeout: 2 msecs.
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Error: only one processor found.
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IO-APIC (apicid-pin) 2-0, 2-16, 2-17, 2-18, 2-19, 2-20, 2-21, 2-22, 2-23 not connected.
..TIMER: vector=0x31 pin1=2 pin2=-1
number of MP IRQ sources: 15.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 02000000
....... : physical APIC id: 02
....... : Delivery Type: 0
....... : LTS : 0
.... register #01: 00178020
....... : max redirection entries: 0017
....... : PRQ implemented: 1
....... : IO APIC version: 0020
.... register #02: 00000000
....... : arbitration: 00
.... register #03: 00000001
....... : Boot DT : 1
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 000 00 1 0 0 0 0 0 0 00
01 001 01 0 0 0 0 0 1 1 39
02 001 01 0 0 0 0 0 1 1 31
03 001 01 0 0 0 0 0 1 1 41
04 001 01 0 0 0 0 0 1 1 49
05 001 01 0 0 0 0 0 1 1 51
06 001 01 0 0 0 0 0 1 1 59
07 001 01 0 0 0 0 0 1 1 61
08 001 01 0 0 0 0 0 1 1 69
09 001 01 1 1 0 0 0 1 1 71
0a 001 01 0 0 0 0 0 1 1 79
0b 001 01 0 0 0 0 0 1 1 81
0c 001 01 0 0 0 0 0 1 1 89
0d 001 01 0 0 0 0 0 1 1 91
0e 001 01 0 0 0 0 0 1 1 99
0f 001 01 0 0 0 0 0 1 1 A1
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 2390.0751 MHz.
..... host bus clock speed is 132.0819 MHz.
Starting migration thread for cpu 0
CPUS done 2
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfb1a0, last bus=2
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20030813
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 *9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 *7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 *5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 *10 11 12 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: the driver 'system' has been registered
PnPBIOS: Scanning system for PnP BIOS support...
PnPBIOS: Found PnP BIOS installation structure at 0xc00fbc00
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0xbc30, dseg 0xf0000
pnp: match found with the PnP device '00:08' and the driver 'system'
pnp: match found with the PnP device '00:09' and the driver 'system'
PnPBIOS: 15 nodes reported by PnP BIOS; 15 recorded by driver
SCSI subsystem initialized
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
IOAPIC[0]: Set PCI routing entry (2-16 -> 0xa9 -> IRQ 16 Mode:1 Active:1)
00:00:1e[A] -> 2-16 -> IRQ 16
IOAPIC[0]: Set PCI routing entry (2-17 -> 0xb1 -> IRQ 17 Mode:1 Active:1)
00:00:1e[B] -> 2-17 -> IRQ 17
IOAPIC[0]: Set PCI routing entry (2-18 -> 0xb9 -> IRQ 18 Mode:1 Active:1)
00:00:1e[C] -> 2-18 -> IRQ 18
IOAPIC[0]: Set PCI routing entry (2-19 -> 0xc1 -> IRQ 19 Mode:1 Active:1)
00:00:1e[D] -> 2-19 -> IRQ 19
Pin 2-16 already programmed
Pin 2-18 already programmed
Pin 2-17 already programmed
Pin 2-16 already programmed
Pin 2-19 already programmed
Pin 2-18 already programmed
IOAPIC[0]: Set PCI routing entry (2-23 -> 0xc9 -> IRQ 23 Mode:1 Active:1)
00:00:1d[D] -> 2-23 -> IRQ 23
Pin 2-16 already programmed
Pin 2-17 already programmed
Pin 2-18 already programmed
Pin 2-19 already programmed
Pin 2-17 already programmed
Pin 2-18 already programmed
Pin 2-19 already programmed
Pin 2-16 already programmed
Pin 2-18 already programmed
Pin 2-19 already programmed
Pin 2-16 already programmed
Pin 2-17 already programmed
Pin 2-19 already programmed
Pin 2-16 already programmed
Pin 2-17 already programmed
Pin 2-18 already programmed
Pin 2-17 already programmed
Pin 2-18 already programmed
Pin 2-19 already programmed
Pin 2-16 already programmed
IOAPIC[0]: Set PCI routing entry (2-21 -> 0xd1 -> IRQ 21 Mode:1 Active:1)
00:02:05[A] -> 2-21 -> IRQ 21
Pin 2-21 already programmed
Pin 2-21 already programmed
Pin 2-21 already programmed
Pin 2-23 already programmed
Pin 2-23 already programmed
Pin 2-23 already programmed
Pin 2-23 already programmed
IOAPIC[0]: Set PCI routing entry (2-20 -> 0xd9 -> IRQ 20 Mode:1 Active:1)
00:02:07[A] -> 2-20 -> IRQ 20
Pin 2-20 already programmed
Pin 2-20 already programmed
Pin 2-20 already programmed
IOAPIC[0]: Set PCI routing entry (2-22 -> 0xe1 -> IRQ 22 Mode:1 Active:1)
00:02:0a[A] -> 2-22 -> IRQ 22
Pin 2-22 already programmed
Pin 2-22 already programmed
Pin 2-22 already programmed
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
pty: 256 Unix98 ptys configured
Machine check exception polling timer started.
IA-32 Microcode Update Driver: v1.11 <[email protected]>
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16ac)
apm: overridden by ACPI.
ikconfig 0.6 with /proc/config*
highmem bounce pool size: 64 pages
Installing knfsd (copyright (C) 1996 [email protected]).
Initializing Cryptographic API
ACPI: Power Button (FF) [PWRF]
ACPI: Sleep Button (CM) [SLPB]
ACPI: Fan [FAN] (on)
ACPI: Processor [CPU0] (supports C1)
ACPI: Thermal Zone [THRM] (46 C)
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Real Time Clock Driver v1.12
Non-volatile memory driver v1.2
hw_random: RNG not detected
i810 TCO timer, v0.05: timer margin: 30 sec (0x0460) (nowayout=0)
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:0c' and the driver 'serial'
pnp: match found with the PnP device '00:10' and the driver 'serial'
pnp: the driver 'parport_pc' has been registered
Using anticipatory scheduling io scheduler
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH4: IDE controller at PCI slot 0000:00:1f.1
ICH4: chipset revision 2
ICH4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:pio
hdc: SR244W, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
PDC20276: IDE controller at PCI slot 0000:02:0a.0
PDC20276: chipset revision 1
PDC20276: 100% native mode on irq 22
ide2: BM-DMA at 0xcc00-0xcc07, BIOS settings: hde:pio, hdf:pio
ide3: BM-DMA at 0xcc08-0xcc0f, BIOS settings: hdg:pio, hdh:pio
hde: ST3160023A, ATA DISK drive
ide2 at 0xbc00-0xbc07,0xc002 on irq 22
hdg: ST3160023A, ATA DISK drive
ide3 at 0xc400-0xc407,0xc802 on irq 22
hde: max request size: 1024KiB
hde: 312581808 sectors (160041 MB) w/8192KiB Cache, CHS=19457/255/63, UDMA(100)
hde: hde1 hde2 hde3
hdg: max request size: 1024KiB
hdg: 312581808 sectors (160041 MB) w/8192KiB Cache, CHS=19457/255/63, UDMA(100)
hdg: hdg1
hdc: ATAPI 24X CD-ROM drive, 128kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.12
ehci_hcd 0000:00:1d.7: EHCI Host Controller
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: irq 23, pci mem f8807000
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:1d.7: enabled 64bit PCI DMA
PCI: cache line size of 128 is not supported by device 0000:00:1d.7
ehci_hcd 0000:00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2003-Jun-13
hub 1-0:0: USB hub found
hub 1-0:0: 6 ports detected
drivers/usb/host/uhci-hcd.c: USB Universal Host Controller Interface driver v2.1
uhci-hcd 0000:00:1d.0: UHCI Host Controller
PCI: Setting latency timer of device 0000:00:1d.0 to 64
uhci-hcd 0000:00:1d.0: irq 16, io base 0000d800
uhci-hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
hub 2-0:0: USB hub found
hub 2-0:0: 2 ports detected
uhci-hcd 0000:00:1d.1: UHCI Host Controller
PCI: Setting latency timer of device 0000:00:1d.1 to 64
uhci-hcd 0000:00:1d.1: irq 19, io base 0000d000
uhci-hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
hub 3-0:0: USB hub found
hub 3-0:0: 2 ports detected
uhci-hcd 0000:00:1d.2: UHCI Host Controller
PCI: Setting latency timer of device 0000:00:1d.2 to 64
uhci-hcd 0000:00:1d.2: irq 18, io base 0000d400
uhci-hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
hub 4-0:0: USB hub found
hub 4-0:0: 2 ports detected
Initializing USB Mass Storage driver...
drivers/usb/core/usb.c: registered new driver usb-storage
USB Mass Storage support registered.
drivers/usb/core/usb.c: registered new driver hiddev
drivers/usb/core/usb.c: registered new driver hid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic
drivers/usb/core/usb.c: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
drivers/usb/core/usb.c: registered new driver usblcd
drivers/usb/misc/usblcd.c: USBLCD Driver Version 1.04 (C) Adams IT Services http://www.usblcd.de
drivers/usb/misc/usblcd.c: USBLCD support registered.
mice: PS/2 mouse device common for all mice
input: PC Speaker
input: ImPS/2 Generic Wheel Mouse on isa0060/serio1
serio: i8042 AUX port at 0x60,0x64 irq 12
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
i2c /dev entries driver module version 2.7.0 (20021208)
i2c-i801 version 2.7.0 (20021208)
i2c-piix4 version 2.7.0 (20021208)
registering 1-0290
oprofile: using NMI interrupt.
NET: Registered protocol family 2
IP: routing cache hash table of 4096 buckets, 64Kbytes
TCP: Hash tables configured (established 131072 bind 43690)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
BIOS EDD facility v0.09 2003-Jan-22, 2 devices found
ACPI: (supports S0 S1 S4 S5)
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 368k freed
Adding 1959920k swap on /dev/hde2. Priority:-1 extents:1
Intel(R) PRO/1000 Network Driver - version 5.1.13-k2
Copyright (c) 1999-2003 Intel Corporation.
eth0: Intel(R) PRO/1000 Network Connection
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex

00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge (rev 11)
00:01.0 PCI bridge: Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge (rev 11)
00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 02)
00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 02)
00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 02)
00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB PCI Bridge (rev 82)
00:1f.0 ISA bridge: Intel Corp. 82801DB ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801DB ICH4 IDE (rev 02)
00:1f.3 SMBus: Intel Corp. 82801DB SMBus (rev 02)
02:05.0 Ethernet controller: Intel Corp. 82540EM Gigabit Ethernet Controller (rev 02)
02:06.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 10)
02:07.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)
02:0a.0 RAID bus controller: Promise Technology, Inc. PDC20276 IDE (rev 01)

CPU0
0: 3293854 IO-APIC-edge timer
1: 19 IO-APIC-edge i8042
2: 0 XT-PIC cascade
8: 4 IO-APIC-edge rtc
9: 1 IO-APIC-level acpi
12: 60 IO-APIC-edge i8042
15: 10 IO-APIC-edge ide1
16: 0 IO-APIC-level uhci-hcd
18: 0 IO-APIC-level uhci-hcd
19: 0 IO-APIC-level uhci-hcd
21: 32123 IO-APIC-level eth0
22: 1095 IO-APIC-level ide2, ide3
23: 0 IO-APIC-level ehci_hcd
NMI: 0
LOC: 3293831
ERR: 0
MIS: 0


2003-09-12 17:45:30

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Fri, 12 Sep 2003, Petr Vandrovec wrote:

> I have MicroStar MS-9211 box with connected to the KVM switch
> MasterView CS-1016, which is connected to the some Chicony
> keyboard. 2.4.x kernel works without problem, but when 2.6.0
> starts, immediately after input device driver is initialized it starts
> thinking that F7 key is held down, and it stays that way until
> I hit some other key to stop autorepeat... What debugging I
> can do for you to get rid of screen full of '^[[18~' ? /bin/login
> continuously complains about username being too long :-(

Hi Petr,
I have the same problem with an Avocent SwitchView and Keytronic
keyboard, although it doesn't sound as bad as your problem. Occasionally
some keys just repeat until i press another key. I'm not quite sure what
kind of information Vojtech would like. The machine is 440BX based and
kernel is 2.6.0-test3-mm1

CPU0 CPU1
0: 257421453 254104517 IO-APIC-edge timer
1: 424923 422774 IO-APIC-edge i8042
2: 0 0 XT-PIC cascade
3: 228634 228311 IO-APIC-edge serial
4: 116114 113964 IO-APIC-edge serial
8: 13986431 13605977 IO-APIC-edge rtc
12: 1836529 1831055 IO-APIC-edge i8042
14: 8919333 8754830 IO-APIC-edge ide0
15: 8852308 8762306 IO-APIC-edge ide1
16: 22023199 21397513 IO-APIC-level radeon@PCI:1:0:0
18: 11117225 10991498 IO-APIC-level aic7xxx, aic7xxx, EMU10K1
19: 10331810 10340569 IO-APIC-level uhci-hcd, eth0, eth1
NMI: 0 0
LOC: 511599000 511599061

2003-09-12 18:36:55

by Petr Vandrovec

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On 12 Sep 03 at 13:45, Zwane Mwaikambo wrote:

> On Fri, 12 Sep 2003, Petr Vandrovec wrote:
>
> > I have MicroStar MS-9211 box with connected to the KVM switch
> > MasterView CS-1016, which is connected to the some Chicony
> > keyboard. 2.4.x kernel works without problem, but when 2.6.0
> > starts, immediately after input device driver is initialized it starts
> > thinking that F7 key is held down, and it stays that way until
> > I hit some other key to stop autorepeat... What debugging I
> > can do for you to get rid of screen full of '^[[18~' ? /bin/login
> > continuously complains about username being too long :-(
>
> Hi Petr,
> I have the same problem with an Avocent SwitchView and Keytronic
> keyboard, although it doesn't sound as bad as your problem. Occasionally
> some keys just repeat until i press another key. I'm not quite sure what
> kind of information Vojtech would like. The machine is 440BX based and
> kernel is 2.6.0-test3-mm1

Andries is already gathering info for this one. This problem (missed
key release) happens to me on all systems I have (Athlon + via, P3 + i440BX,
P4 + 845...), most often when I do alt+right-arrow for walking through
consoles (and for Andries: hitting key stops this, otherwise it
endlessly switches all VTs around, and while kernel thinks that key
is down, keyboard actually does not generate any IRQs, so keyboard knows
that all keys are released).
Petr


2003-09-13 12:47:10

by Jon Foster

[permalink] [raw]
Subject: Re:Another keyboard woes with 2.6.0...

Hi,

> And while we are talking about input devices, I assume that if I want
> driver for frontpanel LCD & up/enter/next buttons, I'm the one who should
> write it, yes?

There is a userspace driver available for most LCDs. I've only
used it with 2.4, but it should still work with 2.6. It's
called LCDproc and it's available from:

http://lcdproc.omnipotent.net/?continue=yes

Kind regards,

Jon Foster


2003-09-13 18:52:51

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Fri, Sep 12, 2003 at 08:33:24PM +0200, Petr Vandrovec wrote:

> Andries is already gathering info for this one. This problem (missed
> key release) happens to me on all systems I have (Athlon + via, P3 + i440BX,
> P4 + 845...), most often when I do alt+right-arrow for walking through
> consoles (and for Andries: hitting key stops this, otherwise it
> endlessly switches all VTs around, and while kernel thinks that key
> is down, keyboard actually does not generate any IRQs, so keyboard knows
> that all keys are released).

OK. It seems to me the two main hypotheses are: (i) problem with timers,
(ii) problem with keyboard.

In other words: could you (and/or anybody else who can reproduce this
at will) change the #undef DEBUG in i8042.c to #define DEBUG, recreate
the problem, and post or mail the resulting file with keystrokes?

[of course: cut away parts corresponding to login sequences etc.]

This will probably allow us to decide whether the missing key release
was never sent by the keyboard, or was lost by the kernel.

Andries
[email protected]

2003-09-13 19:07:00

by Pekka Pietikainen

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Fri, Sep 12, 2003 at 06:50:44PM +0200, Petr Vandrovec wrote:
> Hi Vojtech,
> keyboard. 2.4.x kernel works without problem, but when 2.6.0
> starts, immediately after input device driver is initialized it starts
> thinking that F7 key is held down, and it stays that way until
> I hit some other key to stop autorepeat... What debugging I
> can do for you to get rid of screen full of '^[[18~' ? /bin/login
> continuously complains about username being too long :-(
Hi

I wonder if the bug I'm seeing, http://bugme.osdl.org/show_bug.cgi?id=1121
is related to this at all. Basically if a key is pressed down
when the input gets passed on from the boot-up compatibility mode
to the full USB stuff it gets stuck permanently.

--
Pekka Pietikainen




2003-09-13 21:42:05

by Petr Vandrovec

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sat, Sep 13, 2003 at 08:52:44PM +0200, Andries Brouwer wrote:
> On Fri, Sep 12, 2003 at 08:33:24PM +0200, Petr Vandrovec wrote:
>
> > Andries is already gathering info for this one. This problem (missed
> > key release) happens to me on all systems I have (Athlon + via, P3 + i440BX,
> > P4 + 845...), most often when I do alt+right-arrow for walking through
> > consoles (and for Andries: hitting key stops this, otherwise it
> > endlessly switches all VTs around, and while kernel thinks that key
> > is down, keyboard actually does not generate any IRQs, so keyboard knows
> > that all keys are released).
>
> OK. It seems to me the two main hypotheses are: (i) problem with timers,
> (ii) problem with keyboard.
>
> In other words: could you (and/or anybody else who can reproduce this
> at will) change the #undef DEBUG in i8042.c to #define DEBUG, recreate
> the problem, and post or mail the resulting file with keystrokes?
>
> [of course: cut away parts corresponding to login sequences etc.]
>
> This will probably allow us to decide whether the missing key release
> was never sent by the keyboard, or was lost by the kernel.

Unfortunately I'm at home, while box is at work, so I could only reboot it,
and confirm that it happened again. Unfortunately I cannot go to the box
and hit any key to get some more data. But I'll enable this on my workstation,
and if I'll get some "unexpected keycode" or "keyboard reconnect" errors again,
I'll have more data in the hand.

>From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
it reports current scan set 0x41, and when we enable it, it returns spurious
0x41... And the last 0x41 is one which confuses everything.
Thanks,
Petr

Linux version 2.6.0-test5-c1283 (root@placatec) (gcc version 3.3.2 20030908 (Debian prerelease)) #5 SMP Sat Sep 13 23:11:05 CEST 2003
[...]
drivers/usb/misc/usblcd.c: USBLCD Driver Version 1.04 (C) Adams IT Services http://www.usblcd.de
drivers/usb/misc/usblcd.c: USBLCD support registered.
mice: PS/2 mouse device common for all mice
input: PC Speaker
drivers/input/serio/i8042.c: 20 -> i8042 (command) [0]
drivers/input/serio/i8042.c: 47 <- i8042 (return) [0]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [0]
drivers/input/serio/i8042.c: 56 -> i8042 (parameter) [0]
drivers/input/serio/i8042.c: d3 -> i8042 (command) [0]
drivers/input/serio/i8042.c: f0 -> i8042 (parameter) [0]
drivers/input/serio/i8042.c: 0f <- i8042 (return) [0]
drivers/input/serio/i8042.c: d3 -> i8042 (command) [0]
drivers/input/serio/i8042.c: 56 -> i8042 (parameter) [0]
drivers/input/serio/i8042.c: a9 <- i8042 (return) [0]
drivers/input/serio/i8042.c: d3 -> i8042 (command) [1]
drivers/input/serio/i8042.c: a4 -> i8042 (parameter) [1]
drivers/input/serio/i8042.c: 5b <- i8042 (return) [1]
drivers/input/serio/i8042.c: d3 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 5a -> i8042 (parameter) [1]
drivers/input/serio/i8042.c: a5 <- i8042 (return) [1]
drivers/input/serio/i8042.c: a7 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 20 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 76 <- i8042 (return) [1]
drivers/input/serio/i8042.c: a8 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 20 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 56 <- i8042 (return) [1]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 74 -> i8042 (parameter) [1]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [1]
drivers/input/serio/i8042.c: 54 -> i8042 (parameter) [1]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [2]
drivers/input/serio/i8042.c: 56 -> i8042 (parameter) [2]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [2]
drivers/input/serio/i8042.c: f2 -> i8042 (parameter) [2]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [5]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [6]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [6]
drivers/input/serio/i8042.c: 54 -> i8042 (parameter) [6]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [6]
drivers/input/serio/i8042.c: 56 -> i8042 (parameter) [6]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [7]
drivers/input/serio/i8042.c: f2 -> i8042 (parameter) [7]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [10]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [11]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [11]
drivers/input/serio/i8042.c: f6 -> i8042 (parameter) [11]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [15]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [15]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [15]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [18]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [18]
drivers/input/serio/i8042.c: 00 -> i8042 (parameter) [18]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [21]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [21]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [21]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [25]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [25]
drivers/input/serio/i8042.c: 00 -> i8042 (parameter) [25]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [28]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [28]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [28]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [32]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [32]
drivers/input/serio/i8042.c: 00 -> i8042 (parameter) [32]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [35]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [35]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [35]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [39]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [39]
drivers/input/serio/i8042.c: 00 -> i8042 (parameter) [39]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [42]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [42]
drivers/input/serio/i8042.c: e9 -> i8042 (parameter) [42]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [46]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [47]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [48]
drivers/input/serio/i8042.c: 28 <- i8042 (interrupt, aux, 12) [49]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [49]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [49]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [53]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [53]
drivers/input/serio/i8042.c: 03 -> i8042 (parameter) [53]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [56]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [56]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [56]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [60]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [60]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [60]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [63]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [63]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [63]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [67]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [67]
drivers/input/serio/i8042.c: e9 -> i8042 (parameter) [67]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [70]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [71]
drivers/input/serio/i8042.c: 03 <- i8042 (interrupt, aux, 12) [72]
drivers/input/serio/i8042.c: 28 <- i8042 (interrupt, aux, 12) [74]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [74]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [74]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [77]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [77]
drivers/input/serio/i8042.c: 00 -> i8042 (parameter) [77]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [81]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [81]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [81]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [84]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [84]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [84]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [87]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [87]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [87]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [91]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [91]
drivers/input/serio/i8042.c: e9 -> i8042 (parameter) [91]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [94]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [95]
drivers/input/serio/i8042.c: 00 <- i8042 (interrupt, aux, 12) [97]
drivers/input/serio/i8042.c: 28 <- i8042 (interrupt, aux, 12) [98]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [98]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [98]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [101]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [101]
drivers/input/serio/i8042.c: c8 -> i8042 (parameter) [101]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [105]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [105]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [105]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [108]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [108]
drivers/input/serio/i8042.c: 64 -> i8042 (parameter) [108]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [112]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [112]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [112]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [115]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [115]
drivers/input/serio/i8042.c: 50 -> i8042 (parameter) [115]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [119]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [119]
drivers/input/serio/i8042.c: f2 -> i8042 (parameter) [119]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [122]
drivers/input/serio/i8042.c: 03 <- i8042 (interrupt, aux, 12) [123]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [123]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [123]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [127]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [127]
drivers/input/serio/i8042.c: c8 -> i8042 (parameter) [127]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [130]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [130]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [130]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [134]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [134]
drivers/input/serio/i8042.c: c8 -> i8042 (parameter) [134]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [137]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [137]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [137]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [141]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [141]
drivers/input/serio/i8042.c: 50 -> i8042 (parameter) [141]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [144]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [144]
drivers/input/serio/i8042.c: f2 -> i8042 (parameter) [144]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [148]
drivers/input/serio/i8042.c: 03 <- i8042 (interrupt, aux, 12) [149]
input: ImPS/2 Generic Wheel Mouse on isa0060/serio1
drivers/input/serio/i8042.c: d4 -> i8042 (command) [149]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [149]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [152]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [152]
drivers/input/serio/i8042.c: 64 -> i8042 (parameter) [152]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [156]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [156]
drivers/input/serio/i8042.c: f3 -> i8042 (parameter) [156]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [159]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [159]
drivers/input/serio/i8042.c: c8 -> i8042 (parameter) [159]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [163]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [163]
drivers/input/serio/i8042.c: e8 -> i8042 (parameter) [163]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [166]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [166]
drivers/input/serio/i8042.c: 03 -> i8042 (parameter) [166]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [170]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [170]
drivers/input/serio/i8042.c: e6 -> i8042 (parameter) [170]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [173]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [173]
drivers/input/serio/i8042.c: ea -> i8042 (parameter) [173]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [176]
drivers/input/serio/i8042.c: d4 -> i8042 (command) [176]
drivers/input/serio/i8042.c: f4 -> i8042 (parameter) [176]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, aux, 12) [180]
serio: i8042 AUX port at 0x60,0x64 irq 12
drivers/input/serio/i8042.c: 60 -> i8042 (command) [180]
drivers/input/serio/i8042.c: 46 -> i8042 (parameter) [180]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [180]
drivers/input/serio/i8042.c: 47 -> i8042 (parameter) [180]
drivers/input/serio/i8042.c: f2 -> i8042 (kbd-data) [180]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [183]
drivers/input/serio/i8042.c: ab <- i8042 (interrupt, kbd, 1) [184]
drivers/input/serio/i8042.c: 41 <- i8042 (interrupt, kbd, 1) [185]
drivers/input/serio/i8042.c: ed -> i8042 (kbd-data) [185]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [188]
drivers/input/serio/i8042.c: 00 -> i8042 (kbd-data) [188]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [191]
drivers/input/serio/i8042.c: f0 -> i8042 (kbd-data) [191]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [194]
drivers/input/serio/i8042.c: 02 -> i8042 (kbd-data) [194]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [196]
drivers/input/serio/i8042.c: f0 -> i8042 (kbd-data) [196]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [199]
drivers/input/serio/i8042.c: 00 -> i8042 (kbd-data) [199]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [202]
drivers/input/serio/i8042.c: 41 <- i8042 (interrupt, kbd, 1) [203]
drivers/input/serio/i8042.c: f4 -> i8042 (kbd-data) [203]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [206]
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
i2c /dev entries driver module version 2.7.0 (20021208)
i2c-i801 version 2.7.0 (20021208)
i2c-piix4 version 2.7.0 (20021208)
drivers/input/serio/i8042.c: 41 <- i8042 (interrupt, kbd, 1) [207]
registering 1-0290
oprofile: using NMI interrupt.
NET: Registered protocol family 2
IP: routing cache hash table of 4096 buckets, 64Kbytes
TCP: Hash tables configured (established 131072 bind 43690)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
BIOS EDD facility v0.09 2003-Jan-22, 2 devices found
ACPI: (supports S0 S1 S4 S5)
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 368k freed
Adding 1959920k swap on /dev/hde2. Priority:-1 extents:1
Intel(R) PRO/1000 Network Driver - version 5.1.13-k2
Copyright (c) 1999-2003 Intel Corporation.
eth0: Intel(R) PRO/1000 Network Connection
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex

2003-09-14 10:13:34

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sat, Sep 13, 2003 at 11:40:47PM +0200, Petr Vandrovec wrote:

> From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
> it reports current scan set 0x41, and when we enable it, it returns spurious
> 0x41... And the last 0x41 is one which confuses everything.
>
> Linux version 2.6.0-test5-c1283
> [...]
> drivers/usb/misc/usblcd.c: USBLCD Driver Version 1.04 (C) Adams IT Services http://www.usblcd.de
> drivers/usb/misc/usblcd.c: USBLCD support registered.
> mice: PS/2 mouse device common for all mice
> input: PC Speaker

Get keyboard controller command byte
> i8042.c: 20 -> i8042 (command) [0]
> i8042.c: 47 <- i8042 (return) [0]
47: XLATE, SYSF, MIE, KIE

> i8042.c: 60 -> i8042 (command) [0]
> i8042.c: 56 -> i8042 (parameter) [0]
Disable keyboard and keyboard interrupt

> i8042.c: d3 -> i8042 (command) [0]
> i8042.c: f0 -> i8042 (parameter) [0]
> i8042.c: 0f <- i8042 (return) [0]
> i8042.c: d3 -> i8042 (command) [0]
> i8042.c: 56 -> i8042 (parameter) [0]
> i8042.c: a9 <- i8042 (return) [0]
> i8042.c: d3 -> i8042 (command) [1]
> i8042.c: a4 -> i8042 (parameter) [1]
> i8042.c: 5b <- i8042 (return) [1]
> i8042.c: d3 -> i8042 (command) [1]
> i8042.c: 5a -> i8042 (parameter) [1]
> i8042.c: a5 <- i8042 (return) [1]
No special multiplexer in sight

> i8042.c: a7 -> i8042 (command) [1]
Disable mouse port

> i8042.c: 20 -> i8042 (command) [1]
> i8042.c: 76 <- i8042 (return) [1]
XLATE, ME, KE, SYSF, MIE

> i8042.c: a8 -> i8042 (command) [1]
Enable mouse port

> i8042.c: 20 -> i8042 (command) [1]
> i8042.c: 56 <- i8042 (return) [1]
XLATE, KE, SYSF, MIE

> i8042.c: 60 -> i8042 (command) [1]
> i8042.c: 74 -> i8042 (parameter) [1]
> i8042.c: 60 -> i8042 (command) [1]
> i8042.c: 54 -> i8042 (parameter) [1]
> i8042.c: 60 -> i8042 (command) [2]
> i8042.c: 56 -> i8042 (parameter) [2]
After changing our minds twice we set XLATE, KE, SYSF, MIE
(keyboard disabled, mouse enabled)

> i8042.c: d4 -> i8042 (command) [2]
> i8042.c: f2 -> i8042 (parameter) [2]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [5]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [6]
Read mouse ID. Get 0, as expected.

> i8042.c: 60 -> i8042 (command) [6]
> i8042.c: 54 -> i8042 (parameter) [6]
> i8042.c: 60 -> i8042 (command) [6]
> i8042.c: 56 -> i8042 (parameter) [6]
Again some nonsense changes. Set XLATE, KE, SYSF, MIE

> i8042.c: d4 -> i8042 (command) [7]
> i8042.c: f2 -> i8042 (parameter) [7]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [10]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [11]
Read mouse ID again. Get 0, as expected.

> i8042.c: d4 -> i8042 (command) [11]
> i8042.c: f6 -> i8042 (parameter) [11]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [15]
Set defaults.

> i8042.c: d4 -> i8042 (command) [15]
> i8042.c: e8 -> i8042 (parameter) [15]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [18]
> i8042.c: d4 -> i8042 (command) [18]
> i8042.c: 00 -> i8042 (parameter) [18]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [21]
> i8042.c: d4 -> i8042 (command) [21]
> i8042.c: e8 -> i8042 (parameter) [21]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [25]
> i8042.c: d4 -> i8042 (command) [25]
> i8042.c: 00 -> i8042 (parameter) [25]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [28]
> i8042.c: d4 -> i8042 (command) [28]
> i8042.c: e8 -> i8042 (parameter) [28]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [32]
> i8042.c: d4 -> i8042 (command) [32]
> i8042.c: 00 -> i8042 (parameter) [32]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [35]
> i8042.c: d4 -> i8042 (command) [35]
> i8042.c: e8 -> i8042 (parameter) [35]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [39]
> i8042.c: d4 -> i8042 (command) [39]
> i8042.c: 00 -> i8042 (parameter) [39]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [42]
> i8042.c: d4 -> i8042 (command) [42]
> i8042.c: e9 -> i8042 (parameter) [42]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [46]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [47]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [48]
> i8042.c: 28 <- i8042 (interrupt, aux, 12) [49]
Send the magic sequence e8 00 e8 00 e8 00 e8 00 e9
The middle byte of the reply does not have 47: no Touchpad

> i8042.c: d4 -> i8042 (command) [49]
> i8042.c: e8 -> i8042 (parameter) [49]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [53]
> i8042.c: d4 -> i8042 (command) [53]
> i8042.c: 03 -> i8042 (parameter) [53]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [56]
> i8042.c: d4 -> i8042 (command) [56]
> i8042.c: e6 -> i8042 (parameter) [56]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [60]
> i8042.c: d4 -> i8042 (command) [60]
> i8042.c: e6 -> i8042 (parameter) [60]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [63]
> i8042.c: d4 -> i8042 (command) [63]
> i8042.c: e6 -> i8042 (parameter) [63]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [67]
> i8042.c: d4 -> i8042 (command) [67]
> i8042.c: e9 -> i8042 (parameter) [67]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [70]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [71]
> i8042.c: 03 <- i8042 (interrupt, aux, 12) [72]
> i8042.c: 28 <- i8042 (interrupt, aux, 12) [74]
Send the magic sequence e8 03 e6 e6 e6 e9
No magic reaction

> i8042.c: d4 -> i8042 (command) [74]
> i8042.c: e8 -> i8042 (parameter) [74]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [77]
> i8042.c: d4 -> i8042 (command) [77]
> i8042.c: 00 -> i8042 (parameter) [77]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [81]
> i8042.c: d4 -> i8042 (command) [81]
> i8042.c: e6 -> i8042 (parameter) [81]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [84]
> i8042.c: d4 -> i8042 (command) [84]
> i8042.c: e6 -> i8042 (parameter) [84]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [87]
> i8042.c: d4 -> i8042 (command) [87]
> i8042.c: e6 -> i8042 (parameter) [87]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [91]
> i8042.c: d4 -> i8042 (command) [91]
> i8042.c: e9 -> i8042 (parameter) [91]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [94]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [95]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [97]
> i8042.c: 28 <- i8042 (interrupt, aux, 12) [98]
Send the magic sequence e8 00 e6 e6 e6 e9 (Identify Touchpad)
No magic reaction

> i8042.c: d4 -> i8042 (command) [98]
> i8042.c: f3 -> i8042 (parameter) [98]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [101]
> i8042.c: d4 -> i8042 (command) [101]
> i8042.c: c8 -> i8042 (parameter) [101]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [105]
> i8042.c: d4 -> i8042 (command) [105]
> i8042.c: f3 -> i8042 (parameter) [105]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [108]
> i8042.c: d4 -> i8042 (command) [108]
> i8042.c: 64 -> i8042 (parameter) [108]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [112]
> i8042.c: d4 -> i8042 (command) [112]
> i8042.c: f3 -> i8042 (parameter) [112]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [115]
> i8042.c: d4 -> i8042 (command) [115]
> i8042.c: 50 -> i8042 (parameter) [115]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [119]
Set sampling rate to 200, 100, 80

> i8042.c: d4 -> i8042 (command) [119]
> i8042.c: f2 -> i8042 (parameter) [119]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [122]
> i8042.c: 03 <- i8042 (interrupt, aux, 12) [123]
Now ID has become 03: we recognise Intellimouse

> i8042.c: d4 -> i8042 (command) [123]
> i8042.c: f3 -> i8042 (parameter) [123]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [127]
> i8042.c: d4 -> i8042 (command) [127]
> i8042.c: c8 -> i8042 (parameter) [127]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [130]
> i8042.c: d4 -> i8042 (command) [130]
> i8042.c: f3 -> i8042 (parameter) [130]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [134]
> i8042.c: d4 -> i8042 (command) [134]
> i8042.c: c8 -> i8042 (parameter) [134]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [137]
> i8042.c: d4 -> i8042 (command) [137]
> i8042.c: f3 -> i8042 (parameter) [137]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [141]
> i8042.c: d4 -> i8042 (command) [141]
> i8042.c: 50 -> i8042 (parameter) [141]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [144]
> i8042.c: d4 -> i8042 (command) [144]
> i8042.c: f2 -> i8042 (parameter) [144]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [148]
> i8042.c: 03 <- i8042 (interrupt, aux, 12) [149]
After set sampling rate 200,200,80 the ID is still 03:
Not an Explorer mouse

> input: ImPS/2 Generic Wheel Mouse on isa0060/serio1

> i8042.c: d4 -> i8042 (command) [149]
> i8042.c: f3 -> i8042 (parameter) [149]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [152]
> i8042.c: d4 -> i8042 (command) [152]
> i8042.c: 64 -> i8042 (parameter) [152]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [156]
Set sampling rate 100
> i8042.c: d4 -> i8042 (command) [156]
> i8042.c: f3 -> i8042 (parameter) [156]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [159]
> i8042.c: d4 -> i8042 (command) [159]
> i8042.c: c8 -> i8042 (parameter) [159]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [163]
Set sampling rate 200
> i8042.c: d4 -> i8042 (command) [163]
> i8042.c: e8 -> i8042 (parameter) [163]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [166]
> i8042.c: d4 -> i8042 (command) [166]
> i8042.c: 03 -> i8042 (parameter) [166]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [170]
Set resolution 3
> i8042.c: d4 -> i8042 (command) [170]
> i8042.c: e6 -> i8042 (parameter) [170]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [173]
Set scaling 1:1
> i8042.c: d4 -> i8042 (command) [173]
> i8042.c: ea -> i8042 (parameter) [173]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [176]
Set stream mode
> i8042.c: d4 -> i8042 (command) [176]
> i8042.c: f4 -> i8042 (parameter) [176]
> i8042.c: fa <- i8042 (interrupt, aux, 12) [180]
Mouse enable
> serio: i8042 AUX port at 0x60,0x64 irq 12

So far the mouse probing. Now the keyboard probing.
> i8042.c: 60 -> i8042 (command) [180]
> i8042.c: 46 -> i8042 (parameter) [180]
> i8042.c: 60 -> i8042 (command) [180]
> i8042.c: 47 -> i8042 (parameter) [180]
We change our mind once more and set XLATE, SYSF, MIE, KIE

> i8042.c: f2 -> i8042 (kbd-data) [180]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [183]
> i8042.c: ab <- i8042 (interrupt, kbd, 1) [184]
> i8042.c: 41 <- i8042 (interrupt, kbd, 1) [185]
Keyboard ID is as usual (translation of ab 83)

> i8042.c: ed -> i8042 (kbd-data) [185]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [188]
> i8042.c: 00 -> i8042 (kbd-data) [188]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [191]
Set LEDs

> i8042.c: f0 -> i8042 (kbd-data) [191]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [194]
> i8042.c: 02 -> i8042 (kbd-data) [194]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [196]
Set scancode set 2

> i8042.c: f0 -> i8042 (kbd-data) [196]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [199]
> i8042.c: 00 -> i8042 (kbd-data) [199]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [202]
> i8042.c: 41 <- i8042 (interrupt, kbd, 1) [203]
Read scancode set. Get 41 (41 is translation of 02)

> i8042.c: f4 -> i8042 (kbd-data) [203]
> i8042.c: fa <- i8042 (interrupt, kbd, 1) [206]
Keyboard enable

> input: AT Set 2 keyboard on isa0060/serio0
> serio: i8042 KBD port at 0x60,0x64 irq 1
> i2c /dev entries driver module version 2.7.0 (20021208)
> i2c-i801 version 2.7.0 (20021208)
> i2c-piix4 version 2.7.0 (20021208)
> i8042.c: 41 <- i8042 (interrupt, kbd, 1) [207]

Surprise! An additional 41 nobody had asked for.
As a scancode this is the scancode for the F7 function key.

--------

> From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
> it reports current scan set 0x41, and when we enable it, it returns spurious
> 0x41... And the last 0x41 is one which confuses everything.

Yes. ID is OK. Scancode set is OK. But the final one is unexpected.

You say "confuses everything".
Is it not treated as a keypress for the F7 key?

Andries

2003-09-14 10:34:47

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sun, Sep 14, 2003 at 12:13:23PM +0200, Andries Brouwer wrote:

> > From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
> > it reports current scan set 0x41, and when we enable it, it returns spurious
> > 0x41... And the last 0x41 is one which confuses everything.
>
> Yes. ID is OK. Scancode set is OK. But the final one is unexpected.
>
> You say "confuses everything".
> Is it not treated as a keypress for the F7 key?

Hmm. Yes. An F7 that is never released.
Is that what you see - an infinitely repeated F7 until
you hit the next key?

And the 0x41 is generated by this switch?

And it also occurs on 2.4 but there nothing bad happens?

2003-09-14 19:52:30

by Petr Vandrovec

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sun, Sep 14, 2003 at 12:34:44PM +0200, Andries Brouwer wrote:
> On Sun, Sep 14, 2003 at 12:13:23PM +0200, Andries Brouwer wrote:
>
> > > From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
> > > it reports current scan set 0x41, and when we enable it, it returns spurious
> > > 0x41... And the last 0x41 is one which confuses everything.
> >
> > Yes. ID is OK. Scancode set is OK. But the final one is unexpected.
> >
> > You say "confuses everything".
> > Is it not treated as a keypress for the F7 key?
>
> Hmm. Yes. An F7 that is never released.
> Is that what you see - an infinitely repeated F7 until
> you hit the next key?

Yes. It is what I was trying to tell by "confuses everything".

> And the 0x41 is generated by this switch?

Yes.

> And it also occurs on 2.4 but there nothing bad happens?

It looks to me like that it does. We get one 0x41 when we
send ED 00, and second time after enabling keyboard by F4,
like 2.6.x does... But it is not that serious under 2.4.x...

Full log, including reads from status (0x64) register under 2.4.x is at
http://platan.vc.cvut.cz/cs1016-24.log.
Petr Vandrovec


Linux version 2.4.22-ac1 (root@placatec) (gcc version 3.3.2 20030908 (Debian prerelease)) #5 SMP Sun Sep 14 21:35:38 CEST 2003
...
Non-volatile memory driver v1.2
WOutput: ED
RInput: FA
WOutput: 00
RInput: FA
RInput: 41 <<<<<<<<<<<<<<<
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
...
Adding Swap: 1959920k swap-space (priority -1)
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex
WCmd: A8
WCmd: D4
WOutput: F4
WCmd: 60
RInput: FA
WOutput: 47
WOutput: F4
RInput: FA
RInput: 41 <<<<<<<<<<<<<<<<<<<
WCmd: D4
WOutput: F6
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: C8
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: 64
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: 50
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: C8
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: C8
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: 50
RInput: FA
WCmd: D4
WOutput: E6
RInput: FA
WCmd: D4
WOutput: F3
WCmd: D4
RInput: FA
WOutput: 64
RInput: FA
WCmd: D4
WOutput: F2
RInput: FA
WCmd: D4
WOutput: EA
RInput: FA
WCmd: D4
WOutput: F4
RInput: FA

2003-09-14 22:10:31

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sun, Sep 14, 2003 at 09:52:16PM +0200, Petr Vandrovec wrote:

> > Hmm. Yes. An F7 that is never released.
> > Is that what you see - an infinitely repeated F7 until
> > you hit the next key?
>
> Yes. It is what I was trying to tell by "confuses everything".
>
> > And the 0x41 is generated by this switch?
>
> Yes.
>
> > And it also occurs on 2.4 but there nothing bad happens?
>
> It looks to me like that it does. We get one 0x41 when we
> send ED 00, and second time after enabling keyboard by F4,
> like 2.6.x does... But it is not that serious under 2.4.x...

No - it is sent only once (and, I suppose, gives a little bit of garbage
to whatever process eats it in 2.4) but in 2.6 it is repeated.

A separate micro project might be to find out precisely when this
switch sends this code, and whether it can send other codes.

To save this machine for 2.6 no doubt you can invent something
most suitable for you. Replacing input.c:input_repeat_key()
by a dummy routine kills all key repeat.
The key that is repeated is dev->repeat_key, and we have the
keycode there if I am not mistaken, not the scancode, but they
are equal in this case, so you might also add
if (dev->repeat_key == 65)
return;
at the start of input_repeat_key().

In the mean time we must invent a real solution instead of a stopgap.

Andries

2003-09-16 21:23:24

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Fri, Sep 12, 2003 at 01:45:14PM -0400, Zwane Mwaikambo wrote:

> I have the same problem with an Avocent SwitchView and Keytronic
> keyboard, although it doesn't sound as bad as your problem. Occasionally
> some keys just repeat until i press another key.

In Petr's case it looks like his switch produces a single well-defined
byte (0x41) when switching. What about you? Do you get garbage at the
moment of switching, or always the same code(s)?
Do you only get the spurious repeat when switching?
Andrew gets spurious repeats together with mouse activity. Do you?

I am especially interested in cases where people can reproduce
an unwanted key repeat. The question is: is this a bug in our timer code
or use of timers, or did the keyboard never send the key release code?

(#define DEBUG in i8042.c)

Andries

2003-09-16 22:45:54

by Jamie Lokier

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

Andries Brouwer wrote:
> I am especially interested in cases where people can reproduce
> an unwanted key repeat. The question is: is this a bug in our timer code
> or use of timers, or did the keyboard never send the key release code?

I'm seeing bursts of keys when scrolling a lot on the console, but not
long repeats. Perhaps the long delays in the console are preventing
the timer from triggering on time?

-- Jamie

2003-09-16 22:49:32

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Tue, 16 Sep 2003, Andries Brouwer wrote:

> In Petr's case it looks like his switch produces a single well-defined
> byte (0x41) when switching. What about you? Do you get garbage at the
> moment of switching, or always the same code(s)?
> Do you only get the spurious repeat when switching?
> Andrew gets spurious repeats together with mouse activity. Do you?
>
> I am especially interested in cases where people can reproduce
> an unwanted key repeat. The question is: is this a bug in our timer code
> or use of timers, or did the keyboard never send the key release code?
>
> (#define DEBUG in i8042.c)

Hi Andries, sorry for not following up. i'll enable and test this
immediately, my case is a bit hard to reproduce (a matter of days) but if
you'd like to see a capture from KVM switching i can do that.

Follow up coming shortly...

2003-09-16 23:12:52

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Tue, 16 Sep 2003, Zwane Mwaikambo wrote:

> On Tue, 16 Sep 2003, Andries Brouwer wrote:
>
> > In Petr's case it looks like his switch produces a single well-defined
> > byte (0x41) when switching. What about you? Do you get garbage at the
> > moment of switching, or always the same code(s)?
> > Do you only get the spurious repeat when switching?
> > Andrew gets spurious repeats together with mouse activity. Do you?

Nope mouse activity doesn't seem to do it

> > I am especially interested in cases where people can reproduce
> > an unwanted key repeat. The question is: is this a bug in our timer code
> > or use of timers, or did the keyboard never send the key release code?
> >
> > (#define DEBUG in i8042.c)
>
> Hi Andries, sorry for not following up. i'll enable and test this
> immediately, my case is a bit hard to reproduce (a matter of days) but if
> you'd like to see a capture from KVM switching i can do that.
>
> Follow up coming shortly...

Here is an excerpt from a KVM switch, ls -l, KVM switch;

drivers/input/serio/i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150578]
drivers/input/serio/i8042.c: 1f <- i8042 (interrupt, kbd, 1) [150654]
drivers/input/serio/i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150683]
drivers/input/serio/i8042.c: 39 <- i8042 (interrupt, kbd, 1) [150713]
drivers/input/serio/i8042.c: 9f <- i8042 (interrupt, kbd, 1) [150758]
drivers/input/serio/i8042.c: 0c <- i8042 (interrupt, kbd, 1) [150789]
drivers/input/serio/i8042.c: b9 <- i8042 (interrupt, kbd, 1) [150853]
drivers/input/serio/i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150884]
drivers/input/serio/i8042.c: 8c <- i8042 (interrupt, kbd, 1) [150931]
drivers/input/serio/i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150986]
drivers/input/serio/i8042.c: 1c <- i8042 (interrupt, kbd, 1) [151090]
drivers/input/serio/i8042.c: 9c <- i8042 (interrupt, kbd, 1) [151208]
drivers/input/serio/i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152374]
drivers/input/serio/i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152439]
drivers/input/serio/i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152653]
drivers/input/serio/i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152708]

Need something more specific?

2003-09-16 23:18:58

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Tue, 16 Sep 2003, Zwane Mwaikambo wrote:

> Here is an excerpt from a KVM switch, ls -l, KVM switch;
>
> drivers/input/serio/i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150578]
> drivers/input/serio/i8042.c: 1f <- i8042 (interrupt, kbd, 1) [150654]
> drivers/input/serio/i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150683]
> drivers/input/serio/i8042.c: 39 <- i8042 (interrupt, kbd, 1) [150713]
> drivers/input/serio/i8042.c: 9f <- i8042 (interrupt, kbd, 1) [150758]
> drivers/input/serio/i8042.c: 0c <- i8042 (interrupt, kbd, 1) [150789]
> drivers/input/serio/i8042.c: b9 <- i8042 (interrupt, kbd, 1) [150853]
> drivers/input/serio/i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150884]
> drivers/input/serio/i8042.c: 8c <- i8042 (interrupt, kbd, 1) [150931]
> drivers/input/serio/i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150986]
> drivers/input/serio/i8042.c: 1c <- i8042 (interrupt, kbd, 1) [151090]
> drivers/input/serio/i8042.c: 9c <- i8042 (interrupt, kbd, 1) [151208]
> drivers/input/serio/i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152374]
> drivers/input/serio/i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152439]
> drivers/input/serio/i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152653]
> drivers/input/serio/i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152708]
>
> Need something more specific?

Perhaps i should mention that a KVM switch entails two ctrls in close
succession.

2003-09-17 00:01:40

by Andries Brouwer

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Tue, Sep 16, 2003 at 07:12:48PM -0400, Zwane Mwaikambo wrote:

> Here is an excerpt from a KVM switch, ls -l, KVM switch;
>
> i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150578]: l
> i8042.c: 1f <- i8042 (interrupt, kbd, 1) [150654]: s
> i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150683]: l release
> i8042.c: 39 <- i8042 (interrupt, kbd, 1) [150713]: space
> i8042.c: 9f <- i8042 (interrupt, kbd, 1) [150758]: s release
> i8042.c: 0c <- i8042 (interrupt, kbd, 1) [150789]: -
> i8042.c: b9 <- i8042 (interrupt, kbd, 1) [150853]: space release
> i8042.c: 26 <- i8042 (interrupt, kbd, 1) [150884]: l
> i8042.c: 8c <- i8042 (interrupt, kbd, 1) [150931]: - release
> i8042.c: a6 <- i8042 (interrupt, kbd, 1) [150986]: l release
> i8042.c: 1c <- i8042 (interrupt, kbd, 1) [151090]: enter
> i8042.c: 9c <- i8042 (interrupt, kbd, 1) [151208]: enter release
> i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152374]: LCtrl
> i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152439]: LCtrl release
> i8042.c: 1d <- i8042 (interrupt, kbd, 1) [152653]: LCtrl
> i8042.c: 9d <- i8042 (interrupt, kbd, 1) [152708]: LCtrl release

Thanks!
Nothing disturbing from your switch.


Andries

2003-09-19 11:38:42

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: Another keyboard woes with 2.6.0...

On Sat, Sep 13, 2003 at 11:40:47PM +0200, Petr Vandrovec wrote:
> On Sat, Sep 13, 2003 at 08:52:44PM +0200, Andries Brouwer wrote:
> > On Fri, Sep 12, 2003 at 08:33:24PM +0200, Petr Vandrovec wrote:
> >
> > > Andries is already gathering info for this one. This problem (missed
> > > key release) happens to me on all systems I have (Athlon + via, P3 + i440BX,
> > > P4 + 845...), most often when I do alt+right-arrow for walking through
> > > consoles (and for Andries: hitting key stops this, otherwise it
> > > endlessly switches all VTs around, and while kernel thinks that key
> > > is down, keyboard actually does not generate any IRQs, so keyboard knows
> > > that all keys are released).
> >
> > OK. It seems to me the two main hypotheses are: (i) problem with timers,
> > (ii) problem with keyboard.
> >
> > In other words: could you (and/or anybody else who can reproduce this
> > at will) change the #undef DEBUG in i8042.c to #define DEBUG, recreate
> > the problem, and post or mail the resulting file with keystrokes?
> >
> > [of course: cut away parts corresponding to login sequences etc.]
> >
> > This will probably allow us to decide whether the missing key release
> > was never sent by the keyboard, or was lost by the kernel.
>
> Unfortunately I'm at home, while box is at work, so I could only reboot it,
> and confirm that it happened again. Unfortunately I cannot go to the box
> and hit any key to get some more data. But I'll enable this on my workstation,
> and if I'll get some "unexpected keycode" or "keyboard reconnect" errors again,
> I'll have more data in the hand.
>
> >From log it looks like that switch likes 0x41 a lot: it reports ID 0x41AB,
> it reports current scan set 0x41, and when we enable it, it returns spurious
> 0x41... And the last 0x41 is one which confuses everything.

I've just sent a patch to Linus that should fix this. Please try ...
(either get the patch from LKML or wait for next Linus's release).

--
Vojtech Pavlik
SuSE Labs, SuSE CR