Re: [PATCH][RFC] input: remove bios I8042_CTR_XLATE check to makekeyboard usable

From: Dave Young
Date: Wed Oct 28 2009 - 06:43:22 EST


On Wed, Oct 28, 2009 at 11:03:18AM +0100, Vojtech Pavlik wrote:
> On Tue, Oct 27, 2009 at 10:43:10PM -0700, Dmitry Torokhov wrote:
> > Hi Dave,
> >
> > On Tue, Oct 27, 2009 at 01:34:04PM +0800, Dave Young wrote:
> > >
> > > Pressing somekey at early booting phase cause keyboard to be not usable
> > > (The hardware is DELL latitude e5400):
>
> Does early booting mean while the BIOS is coming up? Does the keyboard
> work in GRUB then? Or is it during the early init of the Linux kernel?

Keyboard work under lilo.
For the early booting I means the early init of the linux kernel

>
> > > atkbd.c: Unknown key pressed (raw set 2, code 0xd3 on isa0060/serio0).
> > > atkbd.c: Use 'setkeycodes e053 <keycode>' to make it known.
> > > atkbd.c: Unknown key pressed (raw set 2, code 0x1d3 on isa0060/serio0).
> > > atkbd.c: Use 'setkeycodes e053 <keycode>' to make it known.
> > >
> > > i8042.c set i8042_direct to true when the controller init. But the result
> > > is keyboard not usable, The only option is press the power button to shutdown.
> > >
> > > So here remove the bios check to fix it.
>
> My question would be: Why this happens? Could it be that the probe is
> confused by the keypress and reads the CTR incorrectly? Or is it just
> that the keyboard controller is in fact in translating mode, yet the CTR
> indicates otherwise?
>
> A i8042.debug=1 log of the bad init would be good.

Here it is (retrieve from syslog):

Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: RSDP 000fbce0 00024 (v02 DELL )
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: XSDT 3d391e00 00064 (v01 DELL M09 27D9041D ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: FACP 3d391c9c 000F4 (v04 DELL M09 27D9041D ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: DSDT 3d392400 06857 (v02 INT430 SYSFexxx 00001001 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: FACS 3d3a0c00 00040
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: HPET 3d391f00 00038 (v01 DELL M09 00000001 ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: DMAR 3d3a0400 000F8 (v01 DELL M09 27D9041D ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: APIC 3d392000 00068 (v01 DELL M09 27D9041D ASL 00000047)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: ASF! 3d391c00 00076 (v32 DELL M09 27D9041D ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: MCFG 3d391fc0 0003E (v16 DELL M09 27D9041D ASL 00000061)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: TCPA 3d392300 00032 (v01 00000000 ASL 00000000)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ACPI: SSDT 3d3902e7 0066C (v01 PmRef CpuPm 00003000 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Zone PFN ranges:
Oct 28 18:31:40 darkstar kernel: [ 0.000000] DMA 0x00000000 -> 0x00001000
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Normal 0x00001000 -> 0x000377fe
Oct 28 18:31:40 darkstar kernel: [ 0.000000] HighMem 0x000377fe -> 0x0003d38d
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Movable zone start PFN for each node
Oct 28 18:31:40 darkstar kernel: [ 0.000000] early_node_map[2] active PFN ranges
Oct 28 18:31:40 darkstar kernel: [ 0.000000] 0: 0x00000000 -> 0x0000009f
Oct 28 18:31:40 darkstar kernel: [ 0.000000] 0: 0x00000100 -> 0x0003d38d
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 248708
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Console: colour dummy device 80x25
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... MAX_LOCK_DEPTH: 48
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... MAX_LOCKDEP_KEYS: 8191
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... CLASSHASH_SIZE: 4096
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768
Oct 28 18:31:40 darkstar kernel: [ 0.000000] ... CHAINHASH_SIZE: 16384
Oct 28 18:31:40 darkstar kernel: [ 0.000000] memory used by lock dependency info: 3567 kB
Oct 28 18:31:40 darkstar kernel: [ 0.000000] per task-struct memory footprint: 1152 bytes
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Fast TSC calibration using PIT
Oct 28 18:31:40 darkstar kernel: [ 0.000000] Detected 1995.305 MHz processor.
Oct 28 18:31:40 darkstar kernel: [ 0.003477] Mount-cache hash table entries: 512
Oct 28 18:31:40 darkstar kernel: [ 0.073332] lockdep: fixing up alternatives.
Oct 28 18:31:40 darkstar kernel: [ 0.167889] khelper used greatest stack depth: 6736 bytes left
Oct 28 18:31:40 darkstar kernel: [ 0.167906] Time: 18:31:22 Date: 10/28/09
Oct 28 18:31:40 darkstar kernel: [ 0.183926] bio: create slab <bio-0> at 0
Oct 28 18:31:40 darkstar kernel: [ 0.233917] ACPI: SSDT 3d3a0c80 00043 (v01 LMPWR DELLLOM 00001001 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.699300] highmem bounce pool size: 64 pages
Oct 28 18:31:40 darkstar kernel: [ 0.707157] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Oct 28 18:31:40 darkstar kernel: [ 0.713658] ALI M7101 PMU not found.
Oct 28 18:31:40 darkstar kernel: [ 0.727193] Console: switching to colour frame buffer device 128x48
Oct 28 18:31:40 darkstar kernel: [ 0.745940] ACPI: SSDT 3d390953 002C3 (v01 PmRef BspIst 00003000 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.747451] ACPI: SSDT 3d390ded 005C6 (v01 PmRef BspCst 00003001 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.750953] ACPI: SSDT 3d390c16 001D7 (v01 PmRef ApIst 00003000 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.752370] ACPI: SSDT 3d3913b3 0008D (v01 PmRef ApCst 00003000 INTL 20050624)
Oct 28 18:31:40 darkstar kernel: [ 0.808726] i8k: unable to get SMM BIOS version
Oct 28 18:31:40 darkstar kernel: [ 0.831297] Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
Oct 28 18:31:40 darkstar kernel: [ 0.836900] Hangcheck: Using get_cycles().
Oct 28 18:31:40 darkstar kernel: [ 0.858621] mtrr: type mismatch for e0000000,10000000 old: write-back new: write-combining
Oct 28 18:31:40 darkstar kernel: [ 0.888873] ACPI Warning for \_SB_.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132)
Oct 28 18:31:40 darkstar kernel: [ 0.894759] ACPI Warning for \_SB_.BAT0._BIF: Converted Buffer to expected String at index 10 (20090903/nsrepair-132)
Oct 28 18:31:40 darkstar kernel: [ 0.900646] ACPI Warning for \_SB_.BAT0._BIF: Converted Buffer to expected String at index 11 (20090903/nsrepair-132)
Oct 28 18:31:40 darkstar kernel: [ 0.906408] ACPI Warning for \_SB_.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132)
Oct 28 18:31:40 darkstar kernel: [ 1.006024] [drm:intel_dp_i2c_init] *ERROR* i2c_init DPDDC-B
Oct 28 18:31:40 darkstar kernel: [ 1.022192] [drm:intel_dp_i2c_init] *ERROR* i2c_init DPDDC-C
Oct 28 18:31:40 darkstar kernel: [ 1.033201] [drm:intel_dp_i2c_init] *ERROR* i2c_init DPDDC-D
Oct 28 18:31:40 darkstar kernel: [ 1.652138] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver
Oct 28 18:31:40 darkstar kernel: [ 1.657946] Console: switching to colour dummy device 80x25
Oct 28 18:31:40 darkstar kernel: [ 1.940032] async/0 used greatest stack depth: 6204 bytes left
Oct 28 18:31:40 darkstar kernel: [ 2.033774] Console: switching to colour frame buffer device 160x50
Oct 28 18:31:40 darkstar kernel: [ 2.114389] ACPI Warning for \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) (20090903/nspredef-433)
Oct 28 18:31:40 darkstar kernel: [ 2.657074] i8042.c: Warning: Keylock active.
Oct 28 18:31:40 darkstar kernel: [ 2.666119] Driver 'rtc_cmos' needs updating - please use bus_type methods
Oct 28 18:31:40 darkstar kernel: [ 3.796606] Netfilter messages via NETLINK v0.30.
Oct 28 18:31:40 darkstar kernel: [ 3.796700] nf_conntrack version 0.5.0 (15347 buckets, 61388 max)
Oct 28 18:31:40 darkstar kernel: [ 3.797524] ctnetlink v0.93: registering with nfnetlink.
Oct 28 18:31:40 darkstar kernel: [ 4.196617] sda1 sda2 sda3 sda4 <
Oct 28 18:31:40 darkstar kernel: [ 4.234941] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
Oct 28 18:31:40 darkstar kernel: [ 4.415478] sda5
Oct 28 18:31:40 darkstar kernel: [ 4.662008] sda6 sda7
Oct 28 18:31:40 darkstar kernel: [ 4.696955] sda8 >
Oct 28 18:31:40 darkstar kernel: [ 4.696839] atkbd.c: Unknown key pressed (raw set 2, code 0x125 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 4.696839] atkbd.c: Use 'setkeycodes 25 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 4.783405] registered taskstats version 1
Oct 28 18:31:40 darkstar kernel: [ 4.811084] Magic number: 13:516:545
Oct 28 18:31:40 darkstar kernel: [ 4.832325] atkbd.c: Unknown key pressed (raw set 2, code 0x124 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 4.832327] atkbd.c: Use 'setkeycodes 24 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.081883] atkbd.c: Unknown key pressed (raw set 2, code 0x126 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.085138] atkbd.c: Use 'setkeycodes 26 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.125712] atkbd.c: Unknown key pressed (raw set 2, code 0x125 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.128995] atkbd.c: Use 'setkeycodes 25 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.266914] async/1 used greatest stack depth: 5944 bytes left
Oct 28 18:31:40 darkstar kernel: [ 5.288891] atkbd.c: Unknown key pressed (raw set 2, code 0x124 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.292146] atkbd.c: Use 'setkeycodes 24 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.390758] atkbd.c: Unknown key pressed (raw set 2, code 0x125 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.410290] atkbd.c: Use 'setkeycodes 25 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.410290] atkbd.c: Unknown key pressed (raw set 2, code 0x121 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.410290] atkbd.c: Use 'setkeycodes 21 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.544134] atkbd.c: Unknown key pressed (raw set 2, code 0x124 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.545078] VFS: Mounted root (ext3 filesystem) readonly on device 8:2.
Oct 28 18:31:40 darkstar kernel: [ 5.547392] atkbd.c: Use 'setkeycodes 24 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.659418] atkbd.c: Unknown key pressed (raw set 2, code 0x126 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.680843] atkbd.c: Use 'setkeycodes 26 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.719052] atkbd.c: Unknown key pressed (raw set 2, code 0x125 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.719055] atkbd.c: Use 'setkeycodes 25 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.798708] atkbd.c: Unknown key pressed (raw set 2, code 0x121 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.802006] atkbd.c: Use 'setkeycodes 21 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 5.858461] atkbd.c: Unknown key pressed (raw set 2, code 0x124 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 5.861732] atkbd.c: Use 'setkeycodes 24 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 6.047765] atkbd.c: Unknown key pressed (raw set 2, code 0x120 on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 6.051009] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 6.051009] atkbd.c: Unknown key pressed (raw set 2, code 0x11e on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 6.051009] atkbd.c: Use 'setkeycodes 1e <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 6.051009] atkbd.c: Unknown key pressed (raw set 2, code 0x11f on isa0060/serio0).
Oct 28 18:31:40 darkstar kernel: [ 6.051009] atkbd.c: Use 'setkeycodes 1f <keycode>' to make it known.
Oct 28 18:31:40 darkstar kernel: [ 8.220557] cdrom_id used greatest stack depth: 5856 bytes left
Oct 28 18:31:40 darkstar kernel: [ 17.219715] REISERFS warning (device sda5): reiserfs_fill_super: CONFIG_REISERFS_CHECK is set ON
Oct 28 18:31:40 darkstar kernel: [ 17.230511] REISERFS warning (device sda5): reiserfs_fill_super: - it is slow mode for debugging.
Oct 28 18:31:40 darkstar kernel: [ 17.374339] mount used greatest stack depth: 5796 bytes left
Oct 28 18:31:46 darkstar kernel: [ 24.237922] update-mime-dat used greatest stack depth: 5772 bytes left
Oct 28 18:31:47 darkstar kernel: [ 25.233169] atkbd.c: Unknown key pressed (raw set 2, code 0x20 on isa0060/serio0).
Oct 28 18:31:47 darkstar kernel: [ 25.233176] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:47 darkstar kernel: [ 25.358673] atkbd.c: Unknown key pressed (raw set 2, code 0x120 on isa0060/serio0).
Oct 28 18:31:47 darkstar kernel: [ 25.358681] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:47 darkstar kernel: [ 25.563353] atkbd.c: Unknown key pressed (raw set 2, code 0x20 on isa0060/serio0).
Oct 28 18:31:47 darkstar kernel: [ 25.563360] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:47 darkstar kernel: [ 25.687429] atkbd.c: Unknown key pressed (raw set 2, code 0x120 on isa0060/serio0).
Oct 28 18:31:47 darkstar kernel: [ 25.687437] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:48 darkstar kernel: [ 25.841800] atkbd.c: Unknown key pressed (raw set 2, code 0x20 on isa0060/serio0).
Oct 28 18:31:48 darkstar kernel: [ 25.841808] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.
Oct 28 18:31:48 darkstar kernel: [ 25.956515] atkbd.c: Unknown key pressed (raw set 2, code 0x120 on isa0060/serio0).
Oct 28 18:31:48 darkstar kernel: [ 25.956522] atkbd.c: Use 'setkeycodes 20 <keycode>' to make it known.

>
> > I would be a little hesitant to force translation by default on all
> > architectures, although it may make sense on x86...
>
> The old 2.4 kernel sources say that there are some IBM PowerPC portables
> that don't support translation at all. I wouldn't be surprised if there
> were more examples like that in the embedded space.
>
> I'm not aware of any x86 machine that wouldn't support the translated
> mode.
>
> > Vojtech, you wrote the thing, do you see any issues with forcing
> > translation? I think most of the x86 boxes work in translated mode and
> > the only time it is in raw is when BIOS screwed up initialization.
> >
> > > Signed-off-by: Dave Young <hidave.darkstar@xxxxxxxxx>
> > > ---
> > > drivers/input/serio/i8042.c | 8 --------
> > > 1 file changed, 8 deletions(-)
> > >
> > > --- linux-2.6.orig/drivers/input/serio/i8042.c 2009-10-13 08:57:07.000000000 +0800
> > > +++ linux-2.6/drivers/input/serio/i8042.c 2009-10-27 13:15:13.000000000 +0800
> > > @@ -869,14 +869,6 @@ static int i8042_controller_init(void)
> > > spin_unlock_irqrestore(&i8042_lock, flags);
> > >
> > > /*
> > > - * If the chip is configured into nontranslated mode by the BIOS, don't
> > > - * bother enabling translating and be happy.
> > > - */
> > > -
> > > - if (~i8042_ctr & I8042_CTR_XLATE)
> > > - i8042_direct = true;
> > > -
> > > -/*
> > > * Set nontranslated mode for the kbd interface if requested by an option.
> > > * After this the kbd interface becomes a simple serial in/out, like the aux
> > > * interface is. We don't do this by default, since it can confuse notebook
>
> --
> Vojtech Pavlik
> Director SuSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/