Re: [PATCH] Disable i8042 checks on Intel Apple Macs

From: Bastien Nocera
Date: Tue May 04 2010 - 13:07:24 EST


On Mon, 2010-01-25 at 14:15 -0800, Dmitry Torokhov wrote:
> On Mon, Jan 25, 2010 at 01:32:42PM -0800, H. Peter Anvin wrote:
> > On 01/25/2010 08:34 AM, Vojtech Pavlik wrote:
> > >
> > > Thus I believe that the right fix here is to figure out why the accesses
> > > to the ports 0x60/0x64 take a long time or forever on a Mac. Is it just
> > > that the kernel is timing out waiting for the i8042? Or is it something
> > > more sinister?
> > >
> >
> > In the A20 code in the setup code, I look for 0xFF coming back and
> > terminate the "wait for ready" loop much sooner than for other values.
> > 0xFF is a *possible* status value, but not a very *likely* one
> > (especially for repeated reads), as it would represent:
> >
> > parity error + receive timeout + transmit timeout + keyboard lock +
> > command + selftest OK + input full + output full.
> >
>
> You allow up to 32 0xFFs while i8042 driver does maximum 16 reads of
> whatever - if OBF is still raised we assume i8042 is not there. Does
> that mean that reads from 0x60 is what hurts on Macs?
>
> Bastien, could you try modifying drivers/input/serio/i8042.c::
> i8042_flush() to not call i8042_read_data() when str is 0xff and see if
> it helps with lockups?

Doesn't seem to make any difference. It still hangs after saying:
PNP: No PS/2 controller found. Probing ports directly.

The patch looks like:
udelay(50);
+ if (str == 0xff)
+ continue;
data = i8042_read_data();

Not sure that's what you meant above.

Pressing the power button doesn't make it carry on for me, as it used
to. Let me know if there's anything more you want me to try.

In the meantime, I'll try to get my original patch into my distribution
so I don't get bitten by half-booted kernels in the near future.

Cheers

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