linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] input: alps: Fixes for ALPS driver
@ 2014-10-03  9:43 Pali Rohár
  2014-10-03  9:43 ` [PATCH 1/3] input: alps: Reset mouse before identifying it Pali Rohár
                   ` (3 more replies)
  0 siblings, 4 replies; 41+ messages in thread
From: Pali Rohár @ 2014-10-03  9:43 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

This patch series trying to fix problems with ALPS dualpoint touchpad on
Dell Latitude laptops which are probably caused by bugs in Dell BIOS.

Reported bugs:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258837
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1320022
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1272624

Pali Rohár (3):
  input: alps: Reset mouse before identifying it
  input: alps: For protocol V3, do not process data when last packet's
    bit7 is set
  input: alps: Reset mouse and ALPS driver immediately after first
    invalid packet

 drivers/input/mouse/alps.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 41+ messages in thread

* [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-03  9:43 [PATCH 0/3] input: alps: Fixes for ALPS driver Pali Rohár
@ 2014-10-03  9:43 ` Pali Rohár
  2014-10-03  9:47   ` Hans de Goede
  2014-10-03  9:43 ` [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03  9:43 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

On some systems after starting computer function alps_identify() does not detect
dual ALPS touchpad+trackstick device correctly and detect only touchpad.

Resetting ALPS device before identifiying it fixing this problem and both parts
touchpad and trackstick are detected.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
---
 drivers/input/mouse/alps.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 35a49bf..1bd5aa1 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2403,6 +2403,8 @@ int alps_detect(struct psmouse *psmouse, bool set_properties)
 {
 	struct alps_data dummy;
 
+	psmouse_reset(psmouse);
+
 	if (alps_identify(psmouse, &dummy) < 0)
 		return -1;
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-10-03  9:43 [PATCH 0/3] input: alps: Fixes for ALPS driver Pali Rohár
  2014-10-03  9:43 ` [PATCH 1/3] input: alps: Reset mouse before identifying it Pali Rohár
@ 2014-10-03  9:43 ` Pali Rohár
  2014-10-03  9:51   ` Hans de Goede
  2014-10-03  9:43 ` [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet Pali Rohár
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
  3 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03  9:43 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

Sometimes laptops with closed lid receive invalid ALPS protocol V3 packets with
last bit7 set.

This happens on Dell Latitude laptops and it looks like it is BIOS bug. Probably
EC does not correctly split keyboard and touchpad PS/2 data and when laptop lid
is closed it adds 0xFF packet into touchpad PS/2 data.

When last packet's bit7 is set it is invalid ALPS packet. So Do not process it
and drop it with PSMOUSE_FULL_PACKET.

After testing it looks like this patch fixed problem with reseting mouse (after
series of invalid packets) when laptop lid is closed on Dell Latitude machines.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
---
 drivers/input/mouse/alps.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 1bd5aa1..b1f44d4 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -1179,6 +1179,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
 		return PSMOUSE_BAD_DATA;
 	}
 
+	if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) {
+		// For protocol V3, do not process data when last packet's bit7 is set
+		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
+			psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n",
+				    psmouse->pktcnt - 1,
+				    psmouse->packet[psmouse->pktcnt - 1]);
+			return PSMOUSE_FULL_PACKET;
+		}
+	}
+
 	/* Bytes 2 - pktsize should have 0 in the highest bit */
 	if ((priv->proto_version < ALPS_PROTO_V5) &&
 	    psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03  9:43 [PATCH 0/3] input: alps: Fixes for ALPS driver Pali Rohár
  2014-10-03  9:43 ` [PATCH 1/3] input: alps: Reset mouse before identifying it Pali Rohár
  2014-10-03  9:43 ` [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
@ 2014-10-03  9:43 ` Pali Rohár
  2014-10-03  9:55   ` Hans de Goede
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
  3 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03  9:43 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

For unknown reasons linux psmouse alps driver sometimes receive totally invalid
packet sequences on Dell Latitude laptops. According to ALPS HW engineers these
invalid packets do not come from ALPS devices. So it looks like bug in BIOS and
EC incorrectly split keyboard and touchpad PS/2 data when laptops are under
heavy loads (big I/O together with powersave governor, running on battery).

There are sequences of invalid packets (which are dropeed) and some sequences
which look like valid. But these valid packets cause random trackstick button
pressing, random cursor moving/jumping and in these condition it is not possible
to use ALPS device (trackstick+touchpad).

To prevent random button press and random cursor jumps immediately reset ALPS
device after first invalid packet. This will cause that touchpad and trackstick
will not respond for one or two seconds and it better then random cursor jumps.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
---
 drivers/input/mouse/alps.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index b1f44d4..d2b144f 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2399,6 +2399,10 @@ int alps_init(struct psmouse *psmouse)
 	/* We are having trouble resyncing ALPS touchpads so disable it for now */
 	psmouse->resync_time = 0;
 
+	/* Reset immediately after bad packet. When bad packet arrives then
+	   cursor pointer jumps and trackstick buttons are randomly pressed. */
+	psmouse->resetafter = 1;
+
 	return 0;
 
 init_fail:
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-03  9:43 ` [PATCH 1/3] input: alps: Reset mouse before identifying it Pali Rohár
@ 2014-10-03  9:47   ` Hans de Goede
  2014-10-14  6:08     ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-10-03  9:47 UTC (permalink / raw)
  To: Pali Rohár, Dmitry Torokhov, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel

Hi,

Thanks for working on this!

On 10/03/2014 11:43 AM, Pali Rohár wrote:
> On some systems after starting computer function alps_identify() does not detect
> dual ALPS touchpad+trackstick device correctly and detect only touchpad.
> 
> Resetting ALPS device before identifiying it fixing this problem and both parts
> touchpad and trackstick are detected.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>

Looks good and seems sensible:

Acked-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
>  drivers/input/mouse/alps.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 35a49bf..1bd5aa1 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -2403,6 +2403,8 @@ int alps_detect(struct psmouse *psmouse, bool set_properties)
>  {
>  	struct alps_data dummy;
>  
> +	psmouse_reset(psmouse);
> +
>  	if (alps_identify(psmouse, &dummy) < 0)
>  		return -1;
>  
> 

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-10-03  9:43 ` [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
@ 2014-10-03  9:51   ` Hans de Goede
  2014-10-03  9:58     ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-10-03  9:51 UTC (permalink / raw)
  To: Pali Rohár, Dmitry Torokhov, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel

Hi,

On 10/03/2014 11:43 AM, Pali Rohár wrote:
> Sometimes laptops with closed lid receive invalid ALPS protocol V3 packets with
> last bit7 set.
> 
> This happens on Dell Latitude laptops and it looks like it is BIOS bug. Probably
> EC does not correctly split keyboard and touchpad PS/2 data and when laptop lid
> is closed it adds 0xFF packet into touchpad PS/2 data.
> 
> When last packet's bit7 is set it is invalid ALPS packet. So Do not process it
> and drop it with PSMOUSE_FULL_PACKET.
> 
> After testing it looks like this patch fixed problem with reseting mouse (after
> series of invalid packets) when laptop lid is closed on Dell Latitude machines.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> ---
>  drivers/input/mouse/alps.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 1bd5aa1..b1f44d4 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1179,6 +1179,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
>  		return PSMOUSE_BAD_DATA;
>  	}
>  
> +	if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) {
> +		// For protocol V3, do not process data when last packet's bit7 is set
> +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> +			psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n",
> +				    psmouse->pktcnt - 1,
> +				    psmouse->packet[psmouse->pktcnt - 1]);
> +			return PSMOUSE_FULL_PACKET;
> +		}
> +	}
> +

I wonder if this should not be PSMOUSE_BAD_DATA as a return value ? I realize that
with the 3th patch in place, that will cause an immediate reset, but if your theory is
right that this ff gets inserted from the keyboard ps/2 stream, then we actually want
a full reset as otherwise we will be out of sync then.

>  	/* Bytes 2 - pktsize should have 0 in the highest bit */
>  	if ((priv->proto_version < ALPS_PROTO_V5) &&
>  	    psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&
> 

Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03  9:43 ` [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet Pali Rohár
@ 2014-10-03  9:55   ` Hans de Goede
  2014-10-03 10:05     ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-10-03  9:55 UTC (permalink / raw)
  To: Pali Rohár, Dmitry Torokhov, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel

Hi,

On 10/03/2014 11:43 AM, Pali Rohár wrote:
> For unknown reasons linux psmouse alps driver sometimes receive totally invalid
> packet sequences on Dell Latitude laptops. According to ALPS HW engineers these
> invalid packets do not come from ALPS devices. So it looks like bug in BIOS and
> EC incorrectly split keyboard and touchpad PS/2 data when laptops are under
> heavy loads (big I/O together with powersave governor, running on battery).
> 
> There are sequences of invalid packets (which are dropeed) and some sequences
> which look like valid. But these valid packets cause random trackstick button
> pressing, random cursor moving/jumping and in these condition it is not possible
> to use ALPS device (trackstick+touchpad).
> 
> To prevent random button press and random cursor jumps immediately reset ALPS
> device after first invalid packet. This will cause that touchpad and trackstick
> will not respond for one or two seconds and it better then random cursor jumps.
> 

This one probably should have:

Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1145954

And you may want to add Bug: tags to the relevant patches for the
launchpad issues too.

While on the topic of tags, once we've agreed upon the return value to use for the
2nd patch, can you please resend with a "Cc: stable@vger.kernel.org" added to all
3 patches?

> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>

Looks good and seems sensible:

Acked-by: Hans de Goede <hdegoede@redhat.com>

Thanks & Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-10-03  9:51   ` Hans de Goede
@ 2014-10-03  9:58     ` Pali Rohár
  2014-10-03 10:01       ` Hans de Goede
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03  9:58 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 3052 bytes --]

On Friday 03 October 2014 11:51:22 Hans de Goede wrote:
> Hi,
> 
> On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > Sometimes laptops with closed lid receive invalid ALPS
> > protocol V3 packets with last bit7 set.
> > 
> > This happens on Dell Latitude laptops and it looks like it
> > is BIOS bug. Probably EC does not correctly split keyboard
> > and touchpad PS/2 data and when laptop lid is closed it
> > adds 0xFF packet into touchpad PS/2 data.
> > 
> > When last packet's bit7 is set it is invalid ALPS packet. So
> > Do not process it and drop it with PSMOUSE_FULL_PACKET.
> > 
> > After testing it looks like this patch fixed problem with
> > reseting mouse (after series of invalid packets) when
> > laptop lid is closed on Dell Latitude machines.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > ---
> > 
> >  drivers/input/mouse/alps.c |   10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/drivers/input/mouse/alps.c
> > b/drivers/input/mouse/alps.c index 1bd5aa1..b1f44d4 100644
> > --- a/drivers/input/mouse/alps.c
> > +++ b/drivers/input/mouse/alps.c
> > @@ -1179,6 +1179,16 @@ static psmouse_ret_t
> > alps_process_byte(struct psmouse *psmouse)
> > 
> >  		return PSMOUSE_BAD_DATA;
> >  	
> >  	}
> > 
> > +	if (priv->proto_version == ALPS_PROTO_V3 &&
> > psmouse->pktcnt == psmouse->pktsize) { +		// For protocol
> > V3, do not process data when last packet's bit7 is set
> > +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> > +			psmouse_dbg(psmouse, "v3 discard packet[%i] = 
%x\n",
> > +				    psmouse->pktcnt - 1,
> > +				    psmouse->packet[psmouse->pktcnt - 1]);
> > +			return PSMOUSE_FULL_PACKET;
> > +		}
> > +	}
> > +
> 
> I wonder if this should not be PSMOUSE_BAD_DATA as a return
> value ? I realize that with the 3th patch in place, that will
> cause an immediate reset, but if your theory is right that
> this ff gets inserted from the keyboard ps/2 stream, then we
> actually want a full reset as otherwise we will be out of
> sync then.
> 

We really do not know what is root cause of this problem. 
Probably it is BIOS/EC/firmware/... but it could be something 
other too.

On my laptop - Dell Latitude E6440 - I'm getting these invalid 
packets when I close LID. And they are generated too many (lot of 
per second). When PSMOUSE_FULL_PACKET is returned then no driver 
does not reset touchpad. With PSMOUSE_BAD_DATA psmouse decide 
that it needs reset and with 3rd patch psmouse could try to reset 
device too many times... So I think PSMOUSE_FULL_PACKET is better 
here. And having dmesg log full of device resets is probably not 
good too when laptop lid is closed.

> >  	/* Bytes 2 - pktsize should have 0 in the highest bit */
> >  	if ((priv->proto_version < ALPS_PROTO_V5) &&
> >  	
> >  	    psmouse->pktcnt >= 2 && psmouse->pktcnt <=
> >  	    psmouse->pktsize &&
> 
> Regards,
> 
> Hans

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-10-03  9:58     ` Pali Rohár
@ 2014-10-03 10:01       ` Hans de Goede
  0 siblings, 0 replies; 41+ messages in thread
From: Hans de Goede @ 2014-10-03 10:01 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi,

On 10/03/2014 11:58 AM, Pali Rohár wrote:
> On Friday 03 October 2014 11:51:22 Hans de Goede wrote:
>> Hi,
>>
>> On 10/03/2014 11:43 AM, Pali Rohár wrote:
>>> Sometimes laptops with closed lid receive invalid ALPS
>>> protocol V3 packets with last bit7 set.
>>>
>>> This happens on Dell Latitude laptops and it looks like it
>>> is BIOS bug. Probably EC does not correctly split keyboard
>>> and touchpad PS/2 data and when laptop lid is closed it
>>> adds 0xFF packet into touchpad PS/2 data.
>>>
>>> When last packet's bit7 is set it is invalid ALPS packet. So
>>> Do not process it and drop it with PSMOUSE_FULL_PACKET.
>>>
>>> After testing it looks like this patch fixed problem with
>>> reseting mouse (after series of invalid packets) when
>>> laptop lid is closed on Dell Latitude machines.
>>>
>>> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
>>> Tested-by: Pali Rohár <pali.rohar@gmail.com>
>>> ---
>>>
>>>  drivers/input/mouse/alps.c |   10 ++++++++++
>>>  1 file changed, 10 insertions(+)
>>>
>>> diff --git a/drivers/input/mouse/alps.c
>>> b/drivers/input/mouse/alps.c index 1bd5aa1..b1f44d4 100644
>>> --- a/drivers/input/mouse/alps.c
>>> +++ b/drivers/input/mouse/alps.c
>>> @@ -1179,6 +1179,16 @@ static psmouse_ret_t
>>> alps_process_byte(struct psmouse *psmouse)
>>>
>>>  		return PSMOUSE_BAD_DATA;
>>>  	
>>>  	}
>>>
>>> +	if (priv->proto_version == ALPS_PROTO_V3 &&
>>> psmouse->pktcnt == psmouse->pktsize) { +		// For protocol
>>> V3, do not process data when last packet's bit7 is set
>>> +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
>>> +			psmouse_dbg(psmouse, "v3 discard packet[%i] = 
> %x\n",
>>> +				    psmouse->pktcnt - 1,
>>> +				    psmouse->packet[psmouse->pktcnt - 1]);
>>> +			return PSMOUSE_FULL_PACKET;
>>> +		}
>>> +	}
>>> +
>>
>> I wonder if this should not be PSMOUSE_BAD_DATA as a return
>> value ? I realize that with the 3th patch in place, that will
>> cause an immediate reset, but if your theory is right that
>> this ff gets inserted from the keyboard ps/2 stream, then we
>> actually want a full reset as otherwise we will be out of
>> sync then.
>>
> 
> We really do not know what is root cause of this problem. 
> Probably it is BIOS/EC/firmware/... but it could be something 
> other too.
> 
> On my laptop - Dell Latitude E6440 - I'm getting these invalid 
> packets when I close LID. And they are generated too many (lot of 
> per second). When PSMOUSE_FULL_PACKET is returned then no driver 
> does not reset touchpad. With PSMOUSE_BAD_DATA psmouse decide 
> that it needs reset and with 3rd patch psmouse could try to reset 
> device too many times... So I think PSMOUSE_FULL_PACKET is better 
> here. And having dmesg log full of device resets is probably not 
> good too when laptop lid is closed.

Ok, then lets stick with PSMOUSE_FULL_PACKET.

So this patch also is:

Acked-by: Hans de Goede <hdegoede@redhat.com>

Can you please do a v2, with the following tags added to the
commit messages ? :

- Cc: stable@vger.kernel.org
- Acked-by: Hans de Goede <hdegoede@redhat.com>
- Bug: ... for the relevant bugs

Thanks & Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03  9:55   ` Hans de Goede
@ 2014-10-03 10:05     ` Pali Rohár
  2014-10-03 10:18       ` Hans de Goede
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03 10:05 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 2802 bytes --]

On Friday 03 October 2014 11:55:52 Hans de Goede wrote:
> Hi,
> 
> On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > For unknown reasons linux psmouse alps driver sometimes
> > receive totally invalid packet sequences on Dell Latitude
> > laptops. According to ALPS HW engineers these invalid
> > packets do not come from ALPS devices. So it looks like bug
> > in BIOS and EC incorrectly split keyboard and touchpad PS/2
> > data when laptops are under heavy loads (big I/O together
> > with powersave governor, running on battery).
> > 
> > There are sequences of invalid packets (which are dropeed)
> > and some sequences which look like valid. But these valid
> > packets cause random trackstick button pressing, random
> > cursor moving/jumping and in these condition it is not
> > possible to use ALPS device (trackstick+touchpad).
> > 
> > To prevent random button press and random cursor jumps
> > immediately reset ALPS device after first invalid packet.
> > This will cause that touchpad and trackstick will not
> > respond for one or two seconds and it better then random
> > cursor jumps.
> 
> This one probably should have:
> 
> Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1145954
> 

Yes, in that bug is described same problem as on my E6440.

> And you may want to add Bug: tags to the relevant patches for
> the launchpad issues too.
> 

I just added links to famous ALPS bugs which looks like that one 
which I have on my E6440. But I'm not sure if my patches will 
resolve these problems on other machines too.

> While on the topic of tags, once we've agreed upon the return
> value to use for the 2nd patch, can you please resend with a
> "Cc: stable@vger.kernel.org" added to all 3 patches?
> 

I would like if somebody else can test patches on other machines 
with ALPS devices. Specially this third if it does not break 
something else.

Note that this third patch does not fixing problem correctly with 
jumping & clicking. It just immediately reset ps/2 device if it 
receive invalid packages. So it only try to prevent jumping & 
clicking. On my E6440 machine it somehow working. When driver 
doing ps/2 reset keyboard, touchpad and trackstick not 
responding. I think it is better then having random clicks but 
somebody else really should try and test patches how it will work 
on other machines.

Proper fix would be to understand why invalid packets are 
received and try to force buggy component to not send these 
invalid packets.

> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> 
> Looks good and seems sensible:
> 
> Acked-by: Hans de Goede <hdegoede@redhat.com>
> 
> Thanks & Regards,
> 
> Hans

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03 10:05     ` Pali Rohár
@ 2014-10-03 10:18       ` Hans de Goede
  2014-10-03 10:23         ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-10-03 10:18 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi,

On 10/03/2014 12:05 PM, Pali Rohár wrote:
> On Friday 03 October 2014 11:55:52 Hans de Goede wrote:
>> Hi,
>>
>> On 10/03/2014 11:43 AM, Pali Rohár wrote:
>>> For unknown reasons linux psmouse alps driver sometimes
>>> receive totally invalid packet sequences on Dell Latitude
>>> laptops. According to ALPS HW engineers these invalid
>>> packets do not come from ALPS devices. So it looks like bug
>>> in BIOS and EC incorrectly split keyboard and touchpad PS/2
>>> data when laptops are under heavy loads (big I/O together
>>> with powersave governor, running on battery).
>>>
>>> There are sequences of invalid packets (which are dropeed)
>>> and some sequences which look like valid. But these valid
>>> packets cause random trackstick button pressing, random
>>> cursor moving/jumping and in these condition it is not
>>> possible to use ALPS device (trackstick+touchpad).
>>>
>>> To prevent random button press and random cursor jumps
>>> immediately reset ALPS device after first invalid packet.
>>> This will cause that touchpad and trackstick will not
>>> respond for one or two seconds and it better then random
>>> cursor jumps.
>>
>> This one probably should have:
>>
>> Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1145954
>>
> 
> Yes, in that bug is described same problem as on my E6440.
> 
>> And you may want to add Bug: tags to the relevant patches for
>> the launchpad issues too.
>>

OK, so lets just reference the RH bug then, and leave the others
out.

> 
> I just added links to famous ALPS bugs which looks like that one 
> which I have on my E6440. But I'm not sure if my patches will 
> resolve these problems on other machines too.
> 
>> While on the topic of tags, once we've agreed upon the return
>> value to use for the 2nd patch, can you please resend with a
>> "Cc: stable@vger.kernel.org" added to all 3 patches?
>>
> 
> I would like if somebody else can test patches on other machines 
> with ALPS devices. Specially this third if it does not break 
> something else.

In my experience with ALPS devices, they normally never cause
PSMOUSE_BAD_DATA errors, so I would not worry about regressing
because of that.

> Note that this third patch does not fixing problem correctly with 
> jumping & clicking. It just immediately reset ps/2 device if it 
> receive invalid packages. So it only try to prevent jumping & 
> clicking.

I understand, but that seems to be the best we can do for now.

> On my E6440 machine it somehow working. When driver 
> doing ps/2 reset keyboard, touchpad and trackstick not 
> responding.

Right, but I would expect that to be for only a short period of
time, or does the whole reset take a significant amount of time ?

> I think it is better then having random clicks but 
> somebody else really should try and test patches how it will work 
> on other machines.
> 
> Proper fix would be to understand why invalid packets are 
> received and try to force buggy component to not send these 
> invalid packets.

Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03 10:18       ` Hans de Goede
@ 2014-10-03 10:23         ` Pali Rohár
  2014-10-03 11:03           ` Hans de Goede
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-03 10:23 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 428 bytes --]

On Friday 03 October 2014 12:18:51 Hans de Goede wrote:
> > On my E6440 machine it somehow working. When driver
> > doing ps/2 reset keyboard, touchpad and trackstick not
> > responding.
> 
> Right, but I would expect that to be for only a short period
> of time, or does the whole reset take a significant amount of
> time ?
> 

It is one or two seconds which is OK for me.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03 10:23         ` Pali Rohár
@ 2014-10-03 11:03           ` Hans de Goede
  2014-10-03 12:04             ` Hans de Goede
  0 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-10-03 11:03 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi,

On 10/03/2014 12:23 PM, Pali Rohár wrote:
> On Friday 03 October 2014 12:18:51 Hans de Goede wrote:
>>> On my E6440 machine it somehow working. When driver
>>> doing ps/2 reset keyboard, touchpad and trackstick not
>>> responding.
>>
>> Right, but I would expect that to be for only a short period
>> of time, or does the whole reset take a significant amount of
>> time ?
>>
> 
> It is one or two seconds which is OK for me.

Hmm, 1-2 seconds is quite long, not good. Lets see if the solution
we've been discussing by private mail yields better results.

Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
  2014-10-03 11:03           ` Hans de Goede
@ 2014-10-03 12:04             ` Hans de Goede
  0 siblings, 0 replies; 41+ messages in thread
From: Hans de Goede @ 2014-10-03 12:04 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Dmitry Torokhov, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi,

On 10/03/2014 01:03 PM, Hans de Goede wrote:
> Hi,
> 
> On 10/03/2014 12:23 PM, Pali Rohár wrote:
>> On Friday 03 October 2014 12:18:51 Hans de Goede wrote:
>>>> On my E6440 machine it somehow working. When driver
>>>> doing ps/2 reset keyboard, touchpad and trackstick not
>>>> responding.
>>>
>>> Right, but I would expect that to be for only a short period
>>> of time, or does the whole reset take a significant amount of
>>> time ?
>>>
>>
>> It is one or two seconds which is OK for me.
> 
> Hmm, 1-2 seconds is quite long, not good. Lets see if the solution
> we've been discussing by private mail yields better results.

So further debugging has shown that once this problems happens on
these touchpads, they go into a mode where the spew random giberish,
and as such it seems that resetting them really seems best, so lets
do a v2 of this patchset and go with that.

Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-03  9:47   ` Hans de Goede
@ 2014-10-14  6:08     ` Dmitry Torokhov
  2014-10-15 12:53       ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-10-14  6:08 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Pali Rohár, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede wrote:
> Hi,
> 
> Thanks for working on this!
> 
> On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > On some systems after starting computer function alps_identify() does not detect
> > dual ALPS touchpad+trackstick device correctly and detect only touchpad.
> > 
> > Resetting ALPS device before identifiying it fixing this problem and both parts
> > touchpad and trackstick are detected.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> 
> Looks good and seems sensible:
> 
> Acked-by: Hans de Goede <hdegoede@redhat.com>

*sigh* I am not really happy about this, as we making boot longer and longer
for people without ALPS touchpads. It would be better if we only reset the
mouse when we knew we are dealing with ALPS, and even better if we only reset
it when we suspected that we missed trackstick. Any chance of doing this?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-14  6:08     ` Dmitry Torokhov
@ 2014-10-15 12:53       ` Pali Rohár
  2014-10-15 17:43         ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-15 12:53 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 1950 bytes --]

On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov wrote:
> On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede wrote:
> > Hi,
> > 
> > Thanks for working on this!
> > 
> > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > On some systems after starting computer function
> > > alps_identify() does not detect dual ALPS
> > > touchpad+trackstick device correctly and detect only
> > > touchpad.
> > > 
> > > Resetting ALPS device before identifiying it fixing this
> > > problem and both parts touchpad and trackstick are
> > > detected.
> > > 
> > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > 
> > Looks good and seems sensible:
> > 
> > Acked-by: Hans de Goede <hdegoede@redhat.com>
> 
> *sigh* I am not really happy about this, as we making boot
> longer and longer for people without ALPS touchpads. It would
> be better if we only reset the mouse when we knew we are
> dealing with ALPS, and even better if we only reset it when
> we suspected that we missed trackstick. Any chance of doing
> this?
> 
> Thanks.

Dmitry, problem is that function check which detecting trackstick 
does not working when I start my laptop from power-off state and 
do not reset PS/2 device. But detecting ALPS touchpad looks like 
working. So if do not like this idea, what about doing something 
like this in alps_dectect function?

int alps_detect(...)
{
...
/* detect if device is ALPS */
if (alps_identify(...) < 0)
return -1;
/* now we know that device is ALPS */
if (!(flags & ALPS_DUALPOINT)) {
/* reset it and identify again, maybe there is trackstick */
psmouse_reset(...);
alps_identify(...);
}
...
}

It will does not affect non ALPS devices (because first identify 
call will fail), but will affect ALPS devices without trackstick 
(because identify will be called twice and reset too).

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 12:53       ` Pali Rohár
@ 2014-10-15 17:43         ` Dmitry Torokhov
  2014-10-15 17:57           ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-10-15 17:43 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov wrote:
> > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede wrote:
> > > Hi,
> > > 
> > > Thanks for working on this!
> > > 
> > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > On some systems after starting computer function
> > > > alps_identify() does not detect dual ALPS
> > > > touchpad+trackstick device correctly and detect only
> > > > touchpad.
> > > > 
> > > > Resetting ALPS device before identifiying it fixing this
> > > > problem and both parts touchpad and trackstick are
> > > > detected.
> > > > 
> > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > 
> > > Looks good and seems sensible:
> > > 
> > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > 
> > *sigh* I am not really happy about this, as we making boot
> > longer and longer for people without ALPS touchpads. It would
> > be better if we only reset the mouse when we knew we are
> > dealing with ALPS, and even better if we only reset it when
> > we suspected that we missed trackstick. Any chance of doing
> > this?
> > 
> > Thanks.
> 
> Dmitry, problem is that function check which detecting trackstick 
> does not working when I start my laptop from power-off state and 
> do not reset PS/2 device. But detecting ALPS touchpad looks like 
> working. So if do not like this idea, what about doing something 
> like this in alps_dectect function?
> 
> int alps_detect(...)
> {
> ...
> /* detect if device is ALPS */
> if (alps_identify(...) < 0)
> return -1;
> /* now we know that device is ALPS */
> if (!(flags & ALPS_DUALPOINT)) {
> /* reset it and identify again, maybe there is trackstick */
> psmouse_reset(...);
> alps_identify(...);
> }
> ...
> }
> 
> It will does not affect non ALPS devices (because first identify 
> call will fail), but will affect ALPS devices without trackstick 
> (because identify will be called twice and reset too).

I think this is a step in right direction. Do you know what exactly
fails in alps_identify() on your box if you do not call psmouse_reset?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 17:43         ` Dmitry Torokhov
@ 2014-10-15 17:57           ` Pali Rohár
  2014-10-15 18:00             ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-15 17:57 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 2633 bytes --]

On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov wrote:
> On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov wrote:
> > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede 
wrote:
> > > > Hi,
> > > > 
> > > > Thanks for working on this!
> > > > 
> > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > On some systems after starting computer function
> > > > > alps_identify() does not detect dual ALPS
> > > > > touchpad+trackstick device correctly and detect only
> > > > > touchpad.
> > > > > 
> > > > > Resetting ALPS device before identifiying it fixing
> > > > > this problem and both parts touchpad and trackstick
> > > > > are detected.
> > > > > 
> > > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > > 
> > > > Looks good and seems sensible:
> > > > 
> > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > 
> > > *sigh* I am not really happy about this, as we making boot
> > > longer and longer for people without ALPS touchpads. It
> > > would be better if we only reset the mouse when we knew
> > > we are dealing with ALPS, and even better if we only
> > > reset it when we suspected that we missed trackstick. Any
> > > chance of doing this?
> > > 
> > > Thanks.
> > 
> > Dmitry, problem is that function check which detecting
> > trackstick does not working when I start my laptop from
> > power-off state and do not reset PS/2 device. But detecting
> > ALPS touchpad looks like working. So if do not like this
> > idea, what about doing something like this in alps_dectect
> > function?
> > 
> > int alps_detect(...)
> > {
> > ...
> > /* detect if device is ALPS */
> > if (alps_identify(...) < 0)
> > return -1;
> > /* now we know that device is ALPS */
> > if (!(flags & ALPS_DUALPOINT)) {
> > /* reset it and identify again, maybe there is trackstick */
> > psmouse_reset(...);
> > alps_identify(...);
> > }
> > ...
> > }
> > 
> > It will does not affect non ALPS devices (because first
> > identify call will fail), but will affect ALPS devices
> > without trackstick (because identify will be called twice
> > and reset too).
> 
> I think this is a step in right direction. Do you know what
> exactly fails in alps_identify() on your box if you do not
> call psmouse_reset?
> 
> Thanks.

Yes, I know. It is failing in alps_probe_trackstick_v3(). It 
calls alps_command_mode_read_reg(...) and it returns 0 which 
means trackstick is not there.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 17:57           ` Pali Rohár
@ 2014-10-15 18:00             ` Dmitry Torokhov
  2014-10-15 18:10               ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-10-15 18:00 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár wrote:
> On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov wrote:
> > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> > > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov wrote:
> > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede 
> wrote:
> > > > > Hi,
> > > > > 
> > > > > Thanks for working on this!
> > > > > 
> > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > On some systems after starting computer function
> > > > > > alps_identify() does not detect dual ALPS
> > > > > > touchpad+trackstick device correctly and detect only
> > > > > > touchpad.
> > > > > > 
> > > > > > Resetting ALPS device before identifiying it fixing
> > > > > > this problem and both parts touchpad and trackstick
> > > > > > are detected.
> > > > > > 
> > > > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > 
> > > > > Looks good and seems sensible:
> > > > > 
> > > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > > 
> > > > *sigh* I am not really happy about this, as we making boot
> > > > longer and longer for people without ALPS touchpads. It
> > > > would be better if we only reset the mouse when we knew
> > > > we are dealing with ALPS, and even better if we only
> > > > reset it when we suspected that we missed trackstick. Any
> > > > chance of doing this?
> > > > 
> > > > Thanks.
> > > 
> > > Dmitry, problem is that function check which detecting
> > > trackstick does not working when I start my laptop from
> > > power-off state and do not reset PS/2 device. But detecting
> > > ALPS touchpad looks like working. So if do not like this
> > > idea, what about doing something like this in alps_dectect
> > > function?
> > > 
> > > int alps_detect(...)
> > > {
> > > ...
> > > /* detect if device is ALPS */
> > > if (alps_identify(...) < 0)
> > > return -1;
> > > /* now we know that device is ALPS */
> > > if (!(flags & ALPS_DUALPOINT)) {
> > > /* reset it and identify again, maybe there is trackstick */
> > > psmouse_reset(...);
> > > alps_identify(...);
> > > }
> > > ...
> > > }
> > > 
> > > It will does not affect non ALPS devices (because first
> > > identify call will fail), but will affect ALPS devices
> > > without trackstick (because identify will be called twice
> > > and reset too).
> > 
> > I think this is a step in right direction. Do you know what
> > exactly fails in alps_identify() on your box if you do not
> > call psmouse_reset?
> > 
> > Thanks.
> 
> Yes, I know. It is failing in alps_probe_trackstick_v3(). It 
> calls alps_command_mode_read_reg(...) and it returns 0 which 
> means trackstick is not there.

OK, so can we try sticking psmouse_reset() there? This will limit the
exposure of the new delay.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 18:00             ` Dmitry Torokhov
@ 2014-10-15 18:10               ` Pali Rohár
  2014-10-15 18:22                 ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-15 18:10 UTC (permalink / raw)
  To: Dmitry Torokhov, Tommy Will
  Cc: Hans de Goede, Yunkang Tang, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 3610 bytes --]

On Wednesday 15 October 2014 20:00:11 Dmitry Torokhov wrote:
> On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár wrote:
> > On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov wrote:
> > > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> > > > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov 
wrote:
> > > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de
> > > > > Goede
> > 
> > wrote:
> > > > > > Hi,
> > > > > > 
> > > > > > Thanks for working on this!
> > > > > > 
> > > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > > On some systems after starting computer function
> > > > > > > alps_identify() does not detect dual ALPS
> > > > > > > touchpad+trackstick device correctly and detect
> > > > > > > only touchpad.
> > > > > > > 
> > > > > > > Resetting ALPS device before identifiying it
> > > > > > > fixing this problem and both parts touchpad and
> > > > > > > trackstick are detected.
> > > > > > > 
> > > > > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > > 
> > > > > > Looks good and seems sensible:
> > > > > > 
> > > > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > > > 
> > > > > *sigh* I am not really happy about this, as we making
> > > > > boot longer and longer for people without ALPS
> > > > > touchpads. It would be better if we only reset the
> > > > > mouse when we knew we are dealing with ALPS, and even
> > > > > better if we only reset it when we suspected that we
> > > > > missed trackstick. Any chance of doing this?
> > > > > 
> > > > > Thanks.
> > > > 
> > > > Dmitry, problem is that function check which detecting
> > > > trackstick does not working when I start my laptop from
> > > > power-off state and do not reset PS/2 device. But
> > > > detecting ALPS touchpad looks like working. So if do
> > > > not like this idea, what about doing something like
> > > > this in alps_dectect function?
> > > > 
> > > > int alps_detect(...)
> > > > {
> > > > ...
> > > > /* detect if device is ALPS */
> > > > if (alps_identify(...) < 0)
> > > > return -1;
> > > > /* now we know that device is ALPS */
> > > > if (!(flags & ALPS_DUALPOINT)) {
> > > > /* reset it and identify again, maybe there is
> > > > trackstick */ psmouse_reset(...);
> > > > alps_identify(...);
> > > > }
> > > > ...
> > > > }
> > > > 
> > > > It will does not affect non ALPS devices (because first
> > > > identify call will fail), but will affect ALPS devices
> > > > without trackstick (because identify will be called
> > > > twice and reset too).
> > > 
> > > I think this is a step in right direction. Do you know
> > > what exactly fails in alps_identify() on your box if you
> > > do not call psmouse_reset?
> > > 
> > > Thanks.
> > 
> > Yes, I know. It is failing in alps_probe_trackstick_v3(). It
> > calls alps_command_mode_read_reg(...) and it returns 0 which
> > means trackstick is not there.
> 
> OK, so can we try sticking psmouse_reset() there? This will
> limit the exposure of the new delay.
> 
> Thanks.

Sorry, but I think this is not safe. Function psmouse_reset will 
reset device (set it to relative mode, etc...) and before and 
after alps_probe_trackstick_v3() are called other functions. So 
it could break something else.

Tommy (added To header), what do you think? How could be this 
problem solved? When or where to call psmouse_reset() so that it 
will not affect non ALPS devices and also it call will be safe?

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 18:10               ` Pali Rohár
@ 2014-10-15 18:22                 ` Dmitry Torokhov
  2014-10-19 11:07                   ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-10-15 18:22 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Tommy Will, Hans de Goede, Yunkang Tang, linux-input, linux-kernel

On Wed, Oct 15, 2014 at 08:10:39PM +0200, Pali Rohár wrote:
> On Wednesday 15 October 2014 20:00:11 Dmitry Torokhov wrote:
> > On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár wrote:
> > > On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov wrote:
> > > > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> > > > > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov 
> wrote:
> > > > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de
> > > > > > Goede
> > > 
> > > wrote:
> > > > > > > Hi,
> > > > > > > 
> > > > > > > Thanks for working on this!
> > > > > > > 
> > > > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > > > On some systems after starting computer function
> > > > > > > > alps_identify() does not detect dual ALPS
> > > > > > > > touchpad+trackstick device correctly and detect
> > > > > > > > only touchpad.
> > > > > > > > 
> > > > > > > > Resetting ALPS device before identifiying it
> > > > > > > > fixing this problem and both parts touchpad and
> > > > > > > > trackstick are detected.
> > > > > > > > 
> > > > > > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > > > > > 
> > > > > > > Looks good and seems sensible:
> > > > > > > 
> > > > > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > > > > 
> > > > > > *sigh* I am not really happy about this, as we making
> > > > > > boot longer and longer for people without ALPS
> > > > > > touchpads. It would be better if we only reset the
> > > > > > mouse when we knew we are dealing with ALPS, and even
> > > > > > better if we only reset it when we suspected that we
> > > > > > missed trackstick. Any chance of doing this?
> > > > > > 
> > > > > > Thanks.
> > > > > 
> > > > > Dmitry, problem is that function check which detecting
> > > > > trackstick does not working when I start my laptop from
> > > > > power-off state and do not reset PS/2 device. But
> > > > > detecting ALPS touchpad looks like working. So if do
> > > > > not like this idea, what about doing something like
> > > > > this in alps_dectect function?
> > > > > 
> > > > > int alps_detect(...)
> > > > > {
> > > > > ...
> > > > > /* detect if device is ALPS */
> > > > > if (alps_identify(...) < 0)
> > > > > return -1;
> > > > > /* now we know that device is ALPS */
> > > > > if (!(flags & ALPS_DUALPOINT)) {
> > > > > /* reset it and identify again, maybe there is
> > > > > trackstick */ psmouse_reset(...);
> > > > > alps_identify(...);
> > > > > }
> > > > > ...
> > > > > }
> > > > > 
> > > > > It will does not affect non ALPS devices (because first
> > > > > identify call will fail), but will affect ALPS devices
> > > > > without trackstick (because identify will be called
> > > > > twice and reset too).
> > > > 
> > > > I think this is a step in right direction. Do you know
> > > > what exactly fails in alps_identify() on your box if you
> > > > do not call psmouse_reset?
> > > > 
> > > > Thanks.
> > > 
> > > Yes, I know. It is failing in alps_probe_trackstick_v3(). It
> > > calls alps_command_mode_read_reg(...) and it returns 0 which
> > > means trackstick is not there.
> > 
> > OK, so can we try sticking psmouse_reset() there? This will
> > limit the exposure of the new delay.
> > 
> > Thanks.
> 
> Sorry, but I think this is not safe. Function psmouse_reset will 
> reset device (set it to relative mode, etc...) and before and 
> after alps_probe_trackstick_v3() are called other functions. So 
> it could break something else.

We might need to repeat bits of alps_identify() after resetting the
mouse, you are right. It should still be doable though.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-15 18:22                 ` Dmitry Torokhov
@ 2014-10-19 11:07                   ` Pali Rohár
  2014-10-23 15:44                     ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-10-19 11:07 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Tommy Will, Hans de Goede, Yunkang Tang, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 4251 bytes --]

On Wednesday 15 October 2014 20:22:56 Dmitry Torokhov wrote:
> On Wed, Oct 15, 2014 at 08:10:39PM +0200, Pali Rohár wrote:
> > On Wednesday 15 October 2014 20:00:11 Dmitry Torokhov wrote:
> > > On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár wrote:
> > > > On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov 
wrote:
> > > > > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár 
wrote:
> > > > > > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov
> > 
> > wrote:
> > > > > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de
> > > > > > > Goede
> > > > 
> > > > wrote:
> > > > > > > > Hi,
> > > > > > > > 
> > > > > > > > Thanks for working on this!
> > > > > > > > 
> > > > > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > > > > On some systems after starting computer
> > > > > > > > > function alps_identify() does not detect dual
> > > > > > > > > ALPS touchpad+trackstick device correctly and
> > > > > > > > > detect only touchpad.
> > > > > > > > > 
> > > > > > > > > Resetting ALPS device before identifiying it
> > > > > > > > > fixing this problem and both parts touchpad
> > > > > > > > > and trackstick are detected.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Pali Rohár
> > > > > > > > > <pali.rohar@gmail.com> Tested-by: Pali Rohár
> > > > > > > > > <pali.rohar@gmail.com>
> > > > > > > > 
> > > > > > > > Looks good and seems sensible:
> > > > > > > > 
> > > > > > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > > > > > 
> > > > > > > *sigh* I am not really happy about this, as we
> > > > > > > making boot longer and longer for people without
> > > > > > > ALPS touchpads. It would be better if we only
> > > > > > > reset the mouse when we knew we are dealing with
> > > > > > > ALPS, and even better if we only reset it when we
> > > > > > > suspected that we missed trackstick. Any chance
> > > > > > > of doing this?
> > > > > > > 
> > > > > > > Thanks.
> > > > > > 
> > > > > > Dmitry, problem is that function check which
> > > > > > detecting trackstick does not working when I start
> > > > > > my laptop from power-off state and do not reset
> > > > > > PS/2 device. But detecting ALPS touchpad looks like
> > > > > > working. So if do not like this idea, what about
> > > > > > doing something like this in alps_dectect function?
> > > > > > 
> > > > > > int alps_detect(...)
> > > > > > {
> > > > > > ...
> > > > > > /* detect if device is ALPS */
> > > > > > if (alps_identify(...) < 0)
> > > > > > return -1;
> > > > > > /* now we know that device is ALPS */
> > > > > > if (!(flags & ALPS_DUALPOINT)) {
> > > > > > /* reset it and identify again, maybe there is
> > > > > > trackstick */ psmouse_reset(...);
> > > > > > alps_identify(...);
> > > > > > }
> > > > > > ...
> > > > > > }
> > > > > > 
> > > > > > It will does not affect non ALPS devices (because
> > > > > > first identify call will fail), but will affect
> > > > > > ALPS devices without trackstick (because identify
> > > > > > will be called twice and reset too).
> > > > > 
> > > > > I think this is a step in right direction. Do you know
> > > > > what exactly fails in alps_identify() on your box if
> > > > > you do not call psmouse_reset?
> > > > > 
> > > > > Thanks.
> > > > 
> > > > Yes, I know. It is failing in
> > > > alps_probe_trackstick_v3(). It calls
> > > > alps_command_mode_read_reg(...) and it returns 0 which
> > > > means trackstick is not there.
> > > 
> > > OK, so can we try sticking psmouse_reset() there? This
> > > will limit the exposure of the new delay.
> > > 
> > > Thanks.
> > 
> > Sorry, but I think this is not safe. Function psmouse_reset
> > will reset device (set it to relative mode, etc...) and
> > before and after alps_probe_trackstick_v3() are called
> > other functions. So it could break something else.
> 
> We might need to repeat bits of alps_identify() after
> resetting the mouse, you are right. It should still be doable
> though.

What about checking "E6 report" and if that pass reset device and 
do full alps_identify? With check for "E6 report" we can filter 
probably all PS/2 devices which are not ALPS.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-19 11:07                   ` Pali Rohár
@ 2014-10-23 15:44                     ` Dmitry Torokhov
  2014-11-01 23:29                       ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-10-23 15:44 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Tommy Will, Hans de Goede, Yunkang Tang, linux-input, linux-kernel

On Sun, Oct 19, 2014 at 01:07:41PM +0200, Pali Rohár wrote:
> On Wednesday 15 October 2014 20:22:56 Dmitry Torokhov wrote:
> > On Wed, Oct 15, 2014 at 08:10:39PM +0200, Pali Rohár wrote:
> > > On Wednesday 15 October 2014 20:00:11 Dmitry Torokhov wrote:
> > > > On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár wrote:
> > > > > On Wednesday 15 October 2014 19:43:15 Dmitry Torokhov 
> wrote:
> > > > > > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár 
> wrote:
> > > > > > > On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov
> > > 
> > > wrote:
> > > > > > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de
> > > > > > > > Goede
> > > > > 
> > > > > wrote:
> > > > > > > > > Hi,
> > > > > > > > > 
> > > > > > > > > Thanks for working on this!
> > > > > > > > > 
> > > > > > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > > > > > On some systems after starting computer
> > > > > > > > > > function alps_identify() does not detect dual
> > > > > > > > > > ALPS touchpad+trackstick device correctly and
> > > > > > > > > > detect only touchpad.
> > > > > > > > > > 
> > > > > > > > > > Resetting ALPS device before identifiying it
> > > > > > > > > > fixing this problem and both parts touchpad
> > > > > > > > > > and trackstick are detected.
> > > > > > > > > > 
> > > > > > > > > > Signed-off-by: Pali Rohár
> > > > > > > > > > <pali.rohar@gmail.com> Tested-by: Pali Rohár
> > > > > > > > > > <pali.rohar@gmail.com>
> > > > > > > > > 
> > > > > > > > > Looks good and seems sensible:
> > > > > > > > > 
> > > > > > > > > Acked-by: Hans de Goede <hdegoede@redhat.com>
> > > > > > > > 
> > > > > > > > *sigh* I am not really happy about this, as we
> > > > > > > > making boot longer and longer for people without
> > > > > > > > ALPS touchpads. It would be better if we only
> > > > > > > > reset the mouse when we knew we are dealing with
> > > > > > > > ALPS, and even better if we only reset it when we
> > > > > > > > suspected that we missed trackstick. Any chance
> > > > > > > > of doing this?
> > > > > > > > 
> > > > > > > > Thanks.
> > > > > > > 
> > > > > > > Dmitry, problem is that function check which
> > > > > > > detecting trackstick does not working when I start
> > > > > > > my laptop from power-off state and do not reset
> > > > > > > PS/2 device. But detecting ALPS touchpad looks like
> > > > > > > working. So if do not like this idea, what about
> > > > > > > doing something like this in alps_dectect function?
> > > > > > > 
> > > > > > > int alps_detect(...)
> > > > > > > {
> > > > > > > ...
> > > > > > > /* detect if device is ALPS */
> > > > > > > if (alps_identify(...) < 0)
> > > > > > > return -1;
> > > > > > > /* now we know that device is ALPS */
> > > > > > > if (!(flags & ALPS_DUALPOINT)) {
> > > > > > > /* reset it and identify again, maybe there is
> > > > > > > trackstick */ psmouse_reset(...);
> > > > > > > alps_identify(...);
> > > > > > > }
> > > > > > > ...
> > > > > > > }
> > > > > > > 
> > > > > > > It will does not affect non ALPS devices (because
> > > > > > > first identify call will fail), but will affect
> > > > > > > ALPS devices without trackstick (because identify
> > > > > > > will be called twice and reset too).
> > > > > > 
> > > > > > I think this is a step in right direction. Do you know
> > > > > > what exactly fails in alps_identify() on your box if
> > > > > > you do not call psmouse_reset?
> > > > > > 
> > > > > > Thanks.
> > > > > 
> > > > > Yes, I know. It is failing in
> > > > > alps_probe_trackstick_v3(). It calls
> > > > > alps_command_mode_read_reg(...) and it returns 0 which
> > > > > means trackstick is not there.
> > > > 
> > > > OK, so can we try sticking psmouse_reset() there? This
> > > > will limit the exposure of the new delay.
> > > > 
> > > > Thanks.
> > > 
> > > Sorry, but I think this is not safe. Function psmouse_reset
> > > will reset device (set it to relative mode, etc...) and
> > > before and after alps_probe_trackstick_v3() are called
> > > other functions. So it could break something else.
> > 
> > We might need to repeat bits of alps_identify() after
> > resetting the mouse, you are right. It should still be doable
> > though.
> 
> What about checking "E6 report" and if that pass reset device and 
> do full alps_identify? With check for "E6 report" we can filter 
> probably all PS/2 devices which are not ALPS.
> 

Why don't you pull alps_probe_trackstick_v3() from alps_identify(),
rename it into __alps_identify() and then have real alps_identify be:

static int alps_identfy(struct psmouse *psmouse, struct alps_data *priv)
{
	int error;

	error = __alps_identify(psmouse, priv);
	if (error)
		return error;

	if (priv->proto_version == ALPS_PROTO_V3 &&
	    (priv->flags & ALPS_IS_RUSHMORE)) {
		/*
		 * Some Dell Lattitudes may not always recognize
		 * tracksticks without resetting the device.
		 */
		psmouse_reset(psmouse);

		error =  __alps_identify(psmouse, priv);
		if (error)
			return error;

		if (alps_probe_trackstick_v3(psmouse,
					     ALPS_REG_BASE_RUSHMORE))
			priv->flags &= ~ALPS_DUALPOINT;
	}

	return 0;
}

This way you minimize number of devices exposed to extra reset.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [PATCH v3 0/4] Fixes for ALPS driver
  2014-10-03  9:43 [PATCH 0/3] input: alps: Fixes for ALPS driver Pali Rohár
                   ` (2 preceding siblings ...)
  2014-10-03  9:43 ` [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet Pali Rohár
@ 2014-11-01 23:25 ` Pali Rohár
  2014-11-01 23:25   ` [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync Pali Rohár
                     ` (4 more replies)
  3 siblings, 5 replies; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:25 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

This patch series tries to fix problems with ALPS dualpoint devices on Dell
Latitude laptops which are probably caused by bugs in Dell BIOS, Dell EC or
in ALPS touchpad firmware itself.

Root of problems is yet unknown but at least this patch series could eliminate
reporting bogus data to userspace.

Reported bugs:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258837
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1320022
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1272624
https://bugzilla.redhat.com/show_bug.cgi?id=1145954

Pali Rohár (4):
  input: alps: Do not try to parse data as 3 bytes packet when driver
    is out of sync
  input: alps: Allow 2 invalid packets without resetting device
  input: alps: For protocol V3, do not process data when last packet's
    bit7 is set
  input: alps: Fix trackstick detection

 drivers/input/mouse/alps.c |  113 +++++++++++++++++++++++++++++++-------------
 1 file changed, 80 insertions(+), 33 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 41+ messages in thread

* [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
@ 2014-11-01 23:25   ` Pali Rohár
  2014-11-08 20:52     ` Dmitry Torokhov
  2014-11-01 23:25   ` [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device Pali Rohár
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:25 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

5th and 6th byte of ALPS trackstick V3 protocol match condition for first byte
of PS/2 3 bytes packet. When driver enters out of sync state and ALPS trackstick
is sending data then driver match 5th, 6th and next 1st bytes as PS/2.

It basically means if user is using trackstick when driver is in out of sync
state driver will never resync. Processing these bytes as 3 bytes PS/2 data
cause total mess (random cursor movements, random clicks) and make trackstick
unusable until psmouse driver decide to do full device reset.

Lot of users reported problems with ALPS devices on Dell Latitude E6440, E6540
and E7440 laptops. ALPS device or Dell EC for unknown reason send some invalid
ALPS PS/2 bytes which cause driver out of sync. It looks like that i8042 and
psmouse/alps driver always receive group of 6 bytes packets so there are no
missing bytes and no bytes were inserted between valid once.

This patch does not fix root of problem with ALPS devices found in Dell Latitude
laptops but it does not allow to process some (invalid) subsequence of 6 bytes
ALPS packets as 3 bytes PS/2 when driver is out of sync.

So with this patch trackstick input device does not report bogus data when
also driver is out of sync, so trackstick should be usable on those machines.

Unknown is also information which ALPS devices send 3 bytes packets and why
ALPS driver needs to handle also bare PS/2 packets. According to git (and plus
historic tree from bitkeeper) code for processing 3 bytes bare PS/2 packets
is there since first version of alps.c existence (since 2.6.9-rc2).

We do not want to break some older ALPS devices. And disabling processing bare
PS/2 packets when driver is out of sync should not break it.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/input/mouse/alps.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 2b0ae8c..a772745 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -1156,7 +1156,9 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
 {
 	struct alps_data *priv = psmouse->private;
 
-	if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
+	/* FIXME: Could we receive bare PS/2 packets from DualPoint devices?? */
+	if (!psmouse->out_of_sync_cnt &&
+	    (psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
 		if (psmouse->pktcnt == 3) {
 			alps_report_bare_ps2_packet(psmouse, psmouse->packet,
 						    true);
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
  2014-11-01 23:25   ` [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync Pali Rohár
@ 2014-11-01 23:25   ` Pali Rohár
  2014-11-08 21:00     ` Dmitry Torokhov
  2014-11-01 23:25   ` [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:25 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

On some Dell Latitude laptops ALPS device or Dell EC send one invalid byte in
6 bytes ALPS packet. In this case psmouse driver enter out of sync state. It
looks like that all other bytes in packets are valid and also device working
properly. So there is no need to do full device reset, just need to wait
for byte which match condition for first byte (start of packet). Because ALPS
packets are bigger (6 or 8 bytes) default limit is small.

This patch increase number of invalid bytes to size of 2 ALPS packets which
psmouse driver can drop before do full reset.

Resetting ALPS devices take some time and when doing reset on some Dell laptops
touchpad, trackstick and also keyboard do not respond. So it is better to do it
only if really necessary.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/input/mouse/alps.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index a772745..7c47e97 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2391,6 +2391,9 @@ int alps_init(struct psmouse *psmouse)
 	/* We are having trouble resyncing ALPS touchpads so disable it for now */
 	psmouse->resync_time = 0;
 
+	/* Allow 2 invalid packets without resetting device */
+	psmouse->resetafter = psmouse->pktsize * 2;
+
 	return 0;
 
 init_fail:
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
  2014-11-01 23:25   ` [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync Pali Rohár
  2014-11-01 23:25   ` [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device Pali Rohár
@ 2014-11-01 23:25   ` Pali Rohár
  2014-11-09  7:50     ` Dmitry Torokhov
  2014-11-01 23:25   ` [PATCH v3 4/4] input: alps: Fix trackstick detection Pali Rohár
  2014-11-02 14:14   ` [PATCH v3 0/4] Fixes for ALPS driver Hans de Goede
  4 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:25 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

Sometimes on Dell Latitude laptops psmouse/alps driver receive invalid ALPS
protocol V3 packets with bit7 set in last byte. More often it can be reproduced
on Dell Latitude E6440 or E7440 with closed lid and pushing cover above touchpad.

If bit7 in last packet byte is set then it is not valid ALPS packet. I was told
that ALPS devices never send these packets. It is not know yet who send those
packets, it could be Dell EC, bug in BIOS and also bug in touchpad firmware...

With this patch alps driver does not process those invalid packets and drops it
with PSMOUSE_FULL_PACKET so psmouse driver does not enter to out of sync state.

This patch fix problem when psmouse driver still resetting ALPS device when
laptop lid is closed because of receiving invalid packets in out of sync state.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/input/mouse/alps.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 7c47e97..e802d28 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -1181,6 +1181,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
 		return PSMOUSE_BAD_DATA;
 	}
 
+	if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) {
+		// For protocol V3, do not process data when last packet's bit7 is set
+		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
+			psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n",
+				    psmouse->pktcnt - 1,
+				    psmouse->packet[psmouse->pktcnt - 1]);
+			return PSMOUSE_FULL_PACKET;
+		}
+	}
+
 	/* Bytes 2 - pktsize should have 0 in the highest bit */
 	if ((priv->proto_version < ALPS_PROTO_V5) &&
 	    psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH v3 4/4] input: alps: Fix trackstick detection
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
                     ` (2 preceding siblings ...)
  2014-11-01 23:25   ` [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
@ 2014-11-01 23:25   ` Pali Rohár
  2014-11-09  8:05     ` Dmitry Torokhov
  2014-11-02 14:14   ` [PATCH v3 0/4] Fixes for ALPS driver Hans de Goede
  4 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:25 UTC (permalink / raw)
  To: Dmitry Torokhov, Hans de Goede, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel, Pali Rohár

On some laptops after starting them from off state (not after reboot), function
alps_probe_trackstick_v3() (called from function alps_identify()) does not
detect trackstick. To fix this problem we need to reset device. But function
alps_identify() is called also from alps_detect() and we do not want to reset
device in detect function because it will slow down initialization of all other
non alps devices.

Current alps device init sequence is:
alps_detect() --> alps_identify() (trackstick not detected)
alps_init() --> psmouse_reset() --> alps_identify() (trackstick detected)

This patch moves initialization code between driver functions so we can remove
alps_identify() call from alps_detect(). Which means that trackstick function
alps_probe_trackstick_v3() will be called only from alps_init() and only after
device reset so it will always return correct information about trackstick
presence. Code for identifying protocol version is moved to alps_init() and
because psmouse-base.c calling alps_detect() and alps_init() consecutively then
detection of both alps and also other non alps devices will not be broken.

First this patch moves code between functions:

 * Move calling function alps_probe_trackstick_v3() (for rushmore devices) from
   alps_identify() to alps_hw_init_rushmore_v3()

 * Move code for checking "E6 report" from alps_identify() to alps_detect()

 * Move code for setting correct device name string and model/protocol version
   from alps_detect() to alps_init(). To not break psmouse-base.c in function
   alps_detect() set only generic name "DualPoint TouchPad".

Next it removes alps_identify() from alps_detect() because it is not needed
anymore (code which use it was moved to alps_init()).

And last this patch fix another code for trackstick detection of protocol V3
devices. In function alps_hw_init_v3() is removed ALPS_DUALPOINT flag from
device if alps_setup_trackstick_v3() or alps_setup_trackstick_v3() returns
-ENODEV (which means trackstick is not present).

Now trackstick detection should work and in function alps_init() is set
correct name and other properties for both input devices.

Side effect of this patch is also faster alps devices initialization because
function alps_identify() is called only once (from alps_init()).

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/input/mouse/alps.c |   96 +++++++++++++++++++++++++++++---------------
 1 file changed, 64 insertions(+), 32 deletions(-)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index e802d28..04161b6 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -1732,6 +1732,7 @@ error:
 
 static int alps_hw_init_v3(struct psmouse *psmouse)
 {
+	struct alps_data *priv = psmouse->private;
 	struct ps2dev *ps2dev = &psmouse->ps2dev;
 	int reg_val;
 	unsigned char param[4];
@@ -1740,9 +1741,15 @@ static int alps_hw_init_v3(struct psmouse *psmouse)
 	if (reg_val == -EIO)
 		goto error;
 
-	if (reg_val == 0 &&
-	    alps_setup_trackstick_v3(psmouse, ALPS_REG_BASE_PINNACLE) == -EIO)
-		goto error;
+	if (reg_val == 0) {
+		reg_val = alps_setup_trackstick_v3(psmouse,
+						   ALPS_REG_BASE_PINNACLE);
+		if (reg_val == -EIO)
+			goto error;
+	}
+
+	if (reg_val == -ENODEV)
+		priv->flags &= ~ALPS_DUALPOINT;
 
 	if (alps_enter_command_mode(psmouse) ||
 	    alps_absolute_mode_v3(psmouse)) {
@@ -1849,15 +1856,20 @@ static int alps_hw_init_rushmore_v3(struct psmouse *psmouse)
 	struct ps2dev *ps2dev = &psmouse->ps2dev;
 	int reg_val, ret = -1;
 
-	if (priv->flags & ALPS_DUALPOINT) {
+	reg_val = alps_probe_trackstick_v3(psmouse, ALPS_REG_BASE_RUSHMORE);
+	if (reg_val == -EIO)
+		goto error;
+
+	if (reg_val == 0) {
 		reg_val = alps_setup_trackstick_v3(psmouse,
 						   ALPS_REG_BASE_RUSHMORE);
 		if (reg_val == -EIO)
 			goto error;
-		if (reg_val == -ENODEV)
-			priv->flags &= ~ALPS_DUALPOINT;
 	}
 
+	if (reg_val == -ENODEV)
+		priv->flags &= ~ALPS_DUALPOINT;
+
 	if (alps_enter_command_mode(psmouse) ||
 	    alps_command_mode_read_reg(psmouse, 0xc2d9) == -1 ||
 	    alps_command_mode_write_reg(psmouse, 0xc2cb, 0x00))
@@ -2176,20 +2188,15 @@ static int alps_match_table(struct psmouse *psmouse, struct alps_data *priv,
 
 static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
 {
-	unsigned char e6[4], e7[4], ec[4];
+	unsigned char e7[4], ec[4];
+	int ret;
 
 	/*
 	 * First try "E6 report".
-	 * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed.
-	 * The bits 0-2 of the first byte will be 1s if some buttons are
-	 * pressed.
 	 */
-	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
-			 PSMOUSE_CMD_SETSCALE11, e6))
-		return -EIO;
-
-	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 && e6[2] != 100))
-		return -EINVAL;
+	ret = alps_detect(psmouse, false);
+	if (ret < 0)
+		return ret;
 
 	/*
 	 * Now get the "E7" and "EC" reports.  These will uniquely identify
@@ -2231,12 +2238,6 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
 		priv->y_bits = 12;
 		priv->flags |= ALPS_IS_RUSHMORE;
 
-		/* hack to make addr_command, nibble_command available */
-		psmouse->private = priv;
-
-		if (alps_probe_trackstick_v3(psmouse, ALPS_REG_BASE_RUSHMORE))
-			priv->flags &= ~ALPS_DUALPOINT;
-
 		return 0;
 	} else if (ec[0] == 0x88 && ec[1] == 0x07 &&
 		   ec[2] >= 0x90 && ec[2] <= 0x9d) {
@@ -2370,14 +2371,24 @@ int alps_init(struct psmouse *psmouse)
 		dev1->keybit[BIT_WORD(BTN_MIDDLE)] |= BIT_MASK(BTN_MIDDLE);
 	}
 
+	if (priv->flags & ALPS_DUALPOINT) {
+		/*
+		 * format of device name is: "protocol vendor name"
+		 * see function psmouse_switch_protocol() in psmouse-base.c
+		 */
+		dev2->name = "AlpsPS/2 ALPS DualPoint Stick";
+		dev2->id.product = PSMOUSE_ALPS;
+		dev2->id.version = priv->proto_version;
+	} else {
+		dev2->name = "PS/2 ALPS Mouse";
+		dev2->id.product = PSMOUSE_PS2;
+		dev2->id.version = 0x0000;
+	}
+
 	snprintf(priv->phys, sizeof(priv->phys), "%s/input1", psmouse->ps2dev.serio->phys);
 	dev2->phys = priv->phys;
-	dev2->name = (priv->flags & ALPS_DUALPOINT) ?
-		     "DualPoint Stick" : "ALPS PS/2 Device";
 	dev2->id.bustype = BUS_I8042;
 	dev2->id.vendor  = 0x0002;
-	dev2->id.product = PSMOUSE_ALPS;
-	dev2->id.version = 0x0000;
 	dev2->dev.parent = &psmouse->ps2dev.serio->dev;
 
 	dev2->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
@@ -2392,6 +2403,10 @@ int alps_init(struct psmouse *psmouse)
 	if (input_register_device(priv->dev2))
 		goto init_fail;
 
+	if (!(priv->flags & ALPS_DUALPOINT))
+		psmouse->name = "GlidePoint TouchPad";
+	psmouse->model = priv->proto_version;
+
 	psmouse->protocol_handler = alps_process_byte;
 	psmouse->poll = alps_poll;
 	psmouse->disconnect = alps_disconnect;
@@ -2416,17 +2431,34 @@ init_fail:
 
 int alps_detect(struct psmouse *psmouse, bool set_properties)
 {
-	struct alps_data dummy;
+	unsigned char e6[4];
 
-	if (alps_identify(psmouse, &dummy) < 0)
-		return -1;
+	/*
+	 * Try "E6 report".
+	 * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed.
+	 * The bits 0-2 of the first byte will be 1s if some buttons are
+	 * pressed.
+	 */
+	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
+			 PSMOUSE_CMD_SETSCALE11, e6))
+		return -EIO;
+
+	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 && e6[2] != 100))
+		return -EINVAL;
 
 	if (set_properties) {
+		/*
+		 * NOTE: To detect model and trackstick presence we need to do
+		 *       full device reset. To speed up detection and prevent
+		 *       calling duplicate initialization sequence (both in
+		 *       alps_detect() and alps_init()) we set model/protocol
+		 *       version and correct name in alps_init() (which will
+		 *       do full device reset). For now set name to DualPoint.
+		 */
 		psmouse->vendor = "ALPS";
-		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
-				"DualPoint TouchPad" : "GlidePoint";
-		psmouse->model = dummy.proto_version << 8;
+		psmouse->name = "DualPoint TouchPad";
 	}
+
 	return 0;
 }
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* Re: [PATCH 1/3] input: alps: Reset mouse before identifying it
  2014-10-23 15:44                     ` Dmitry Torokhov
@ 2014-11-01 23:29                       ` Pali Rohár
  0 siblings, 0 replies; 41+ messages in thread
From: Pali Rohár @ 2014-11-01 23:29 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Tommy Will, Hans de Goede, Yunkang Tang, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 6080 bytes --]

On Thursday 23 October 2014 17:44:04 Dmitry Torokhov wrote:
> On Sun, Oct 19, 2014 at 01:07:41PM +0200, Pali Rohár wrote:
> > On Wednesday 15 October 2014 20:22:56 Dmitry Torokhov wrote:
> > > On Wed, Oct 15, 2014 at 08:10:39PM +0200, Pali Rohár wrote:
> > > > On Wednesday 15 October 2014 20:00:11 Dmitry Torokhov 
wrote:
> > > > > On Wed, Oct 15, 2014 at 07:57:37PM +0200, Pali Rohár 
wrote:
> > > > > > On Wednesday 15 October 2014 19:43:15 Dmitry
> > > > > > Torokhov
> > 
> > wrote:
> > > > > > > On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali
> > > > > > > Rohár
> > 
> > wrote:
> > > > > > > > On Tuesday 14 October 2014 08:08:34 Dmitry
> > > > > > > > Torokhov
> > > > 
> > > > wrote:
> > > > > > > > > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans
> > > > > > > > > de Goede
> > > > > > 
> > > > > > wrote:
> > > > > > > > > > Hi,
> > > > > > > > > > 
> > > > > > > > > > Thanks for working on this!
> > > > > > > > > > 
> > > > > > > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote:
> > > > > > > > > > > On some systems after starting computer
> > > > > > > > > > > function alps_identify() does not detect
> > > > > > > > > > > dual ALPS touchpad+trackstick device
> > > > > > > > > > > correctly and detect only touchpad.
> > > > > > > > > > > 
> > > > > > > > > > > Resetting ALPS device before identifiying
> > > > > > > > > > > it fixing this problem and both parts
> > > > > > > > > > > touchpad and trackstick are detected.
> > > > > > > > > > > 
> > > > > > > > > > > Signed-off-by: Pali Rohár
> > > > > > > > > > > <pali.rohar@gmail.com> Tested-by: Pali
> > > > > > > > > > > Rohár <pali.rohar@gmail.com>
> > > > > > > > > > 
> > > > > > > > > > Looks good and seems sensible:
> > > > > > > > > > 
> > > > > > > > > > Acked-by: Hans de Goede
> > > > > > > > > > <hdegoede@redhat.com>
> > > > > > > > > 
> > > > > > > > > *sigh* I am not really happy about this, as we
> > > > > > > > > making boot longer and longer for people
> > > > > > > > > without ALPS touchpads. It would be better if
> > > > > > > > > we only reset the mouse when we knew we are
> > > > > > > > > dealing with ALPS, and even better if we only
> > > > > > > > > reset it when we suspected that we missed
> > > > > > > > > trackstick. Any chance of doing this?
> > > > > > > > > 
> > > > > > > > > Thanks.
> > > > > > > > 
> > > > > > > > Dmitry, problem is that function check which
> > > > > > > > detecting trackstick does not working when I
> > > > > > > > start my laptop from power-off state and do not
> > > > > > > > reset PS/2 device. But detecting ALPS touchpad
> > > > > > > > looks like working. So if do not like this
> > > > > > > > idea, what about doing something like this in
> > > > > > > > alps_dectect function?
> > > > > > > > 
> > > > > > > > int alps_detect(...)
> > > > > > > > {
> > > > > > > > ...
> > > > > > > > /* detect if device is ALPS */
> > > > > > > > if (alps_identify(...) < 0)
> > > > > > > > return -1;
> > > > > > > > /* now we know that device is ALPS */
> > > > > > > > if (!(flags & ALPS_DUALPOINT)) {
> > > > > > > > /* reset it and identify again, maybe there is
> > > > > > > > trackstick */ psmouse_reset(...);
> > > > > > > > alps_identify(...);
> > > > > > > > }
> > > > > > > > ...
> > > > > > > > }
> > > > > > > > 
> > > > > > > > It will does not affect non ALPS devices
> > > > > > > > (because first identify call will fail), but
> > > > > > > > will affect ALPS devices without trackstick
> > > > > > > > (because identify will be called twice and
> > > > > > > > reset too).
> > > > > > > 
> > > > > > > I think this is a step in right direction. Do you
> > > > > > > know what exactly fails in alps_identify() on
> > > > > > > your box if you do not call psmouse_reset?
> > > > > > > 
> > > > > > > Thanks.
> > > > > > 
> > > > > > Yes, I know. It is failing in
> > > > > > alps_probe_trackstick_v3(). It calls
> > > > > > alps_command_mode_read_reg(...) and it returns 0
> > > > > > which means trackstick is not there.
> > > > > 
> > > > > OK, so can we try sticking psmouse_reset() there? This
> > > > > will limit the exposure of the new delay.
> > > > > 
> > > > > Thanks.
> > > > 
> > > > Sorry, but I think this is not safe. Function
> > > > psmouse_reset will reset device (set it to relative
> > > > mode, etc...) and before and after
> > > > alps_probe_trackstick_v3() are called other functions.
> > > > So it could break something else.
> > > 
> > > We might need to repeat bits of alps_identify() after
> > > resetting the mouse, you are right. It should still be
> > > doable though.
> > 
> > What about checking "E6 report" and if that pass reset
> > device and do full alps_identify? With check for "E6
> > report" we can filter probably all PS/2 devices which are
> > not ALPS.
> 
> Why don't you pull alps_probe_trackstick_v3() from
> alps_identify(), rename it into __alps_identify() and then
> have real alps_identify be:
> 
> static int alps_identfy(struct psmouse *psmouse, struct
> alps_data *priv) {
> 	int error;
> 
> 	error = __alps_identify(psmouse, priv);
> 	if (error)
> 		return error;
> 
> 	if (priv->proto_version == ALPS_PROTO_V3 &&
> 	    (priv->flags & ALPS_IS_RUSHMORE)) {
> 		/*
> 		 * Some Dell Lattitudes may not always recognize
> 		 * tracksticks without resetting the device.
> 		 */
> 		psmouse_reset(psmouse);
> 
> 		error =  __alps_identify(psmouse, priv);
> 		if (error)
> 			return error;
> 
> 		if (alps_probe_trackstick_v3(psmouse,
> 					     ALPS_REG_BASE_RUSHMORE))
> 			priv->flags &= ~ALPS_DUALPOINT;
> 	}
> 
> 	return 0;
> }
> 
> This way you minimize number of devices exposed to extra
> reset.
> 
> Thanks.

Hello Dmitry,

I sent new patch series v3 with another solution for fixing this 
problem. It just effectively move more parts of alps code and 
trackstick detection should work. It does not introduce new reset 
call (like in this version) so it is better.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 0/4] Fixes for ALPS driver
  2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
                     ` (3 preceding siblings ...)
  2014-11-01 23:25   ` [PATCH v3 4/4] input: alps: Fix trackstick detection Pali Rohár
@ 2014-11-02 14:14   ` Hans de Goede
  2014-11-06 17:46     ` Pali Rohár
  4 siblings, 1 reply; 41+ messages in thread
From: Hans de Goede @ 2014-11-02 14:14 UTC (permalink / raw)
  To: Pali Rohár, Dmitry Torokhov, Yunkang Tang, Tommy Will
  Cc: linux-input, linux-kernel

Hi,

On 11/02/2014 12:25 AM, Pali Rohár wrote:
> This patch series tries to fix problems with ALPS dualpoint devices on Dell
> Latitude laptops which are probably caused by bugs in Dell BIOS, Dell EC or
> in ALPS touchpad firmware itself.
> 
> Root of problems is yet unknown but at least this patch series could eliminate
> reporting bogus data to userspace.
> 
> Reported bugs:
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258837
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1320022
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1272624
> https://bugzilla.redhat.com/show_bug.cgi?id=1145954
> 
> Pali Rohár (4):
>   input: alps: Do not try to parse data as 3 bytes packet when driver
>     is out of sync
>   input: alps: Allow 2 invalid packets without resetting device
>   input: alps: For protocol V3, do not process data when last packet's
>     bit7 is set
>   input: alps: Fix trackstick detection
> 
>  drivers/input/mouse/alps.c |  113 +++++++++++++++++++++++++++++++-------------
>  1 file changed, 80 insertions(+), 33 deletions(-)

Thanks for working on this, patches 1-3 are:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Patch 4 is too much work to review on a Sunday :), so I'll leave
reviewing it to Dmitry.

Regards,

Hans

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 0/4] Fixes for ALPS driver
  2014-11-02 14:14   ` [PATCH v3 0/4] Fixes for ALPS driver Hans de Goede
@ 2014-11-06 17:46     ` Pali Rohár
  0 siblings, 0 replies; 41+ messages in thread
From: Pali Rohár @ 2014-11-06 17:46 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 1585 bytes --]

On Sunday 02 November 2014 15:14:55 Hans de Goede wrote:
> Hi,
> 
> On 11/02/2014 12:25 AM, Pali Rohár wrote:
> > This patch series tries to fix problems with ALPS dualpoint
> > devices on Dell Latitude laptops which are probably caused
> > by bugs in Dell BIOS, Dell EC or in ALPS touchpad firmware
> > itself.
> > 
> > Root of problems is yet unknown but at least this patch
> > series could eliminate reporting bogus data to userspace.
> > 
> > Reported bugs:
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258837
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1320022
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1272624
> > https://bugzilla.redhat.com/show_bug.cgi?id=1145954
> > 
> > Pali Rohár (4):
> >   input: alps: Do not try to parse data as 3 bytes packet
> >   when driver
> >   
> >     is out of sync
> >   
> >   input: alps: Allow 2 invalid packets without resetting
> >   device input: alps: For protocol V3, do not process data
> >   when last packet's
> >   
> >     bit7 is set
> >   
> >   input: alps: Fix trackstick detection
> >  
> >  drivers/input/mouse/alps.c |  113
> >  +++++++++++++++++++++++++++++++------------- 1 file
> >  changed, 80 insertions(+), 33 deletions(-)
> 
> Thanks for working on this, patches 1-3 are:
> 
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> 
> Patch 4 is too much work to review on a Sunday :), so I'll
> leave reviewing it to Dmitry.
> 
> Regards,
> 
> Hans

Dmitry, can you review v3 patches?

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync
  2014-11-01 23:25   ` [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync Pali Rohár
@ 2014-11-08 20:52     ` Dmitry Torokhov
  0 siblings, 0 replies; 41+ messages in thread
From: Dmitry Torokhov @ 2014-11-08 20:52 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Sun, Nov 02, 2014 at 12:25:07AM +0100, Pali Rohár wrote:
> 5th and 6th byte of ALPS trackstick V3 protocol match condition for first byte
> of PS/2 3 bytes packet. When driver enters out of sync state and ALPS trackstick
> is sending data then driver match 5th, 6th and next 1st bytes as PS/2.
> 
> It basically means if user is using trackstick when driver is in out of sync
> state driver will never resync. Processing these bytes as 3 bytes PS/2 data
> cause total mess (random cursor movements, random clicks) and make trackstick
> unusable until psmouse driver decide to do full device reset.
> 
> Lot of users reported problems with ALPS devices on Dell Latitude E6440, E6540
> and E7440 laptops. ALPS device or Dell EC for unknown reason send some invalid
> ALPS PS/2 bytes which cause driver out of sync. It looks like that i8042 and
> psmouse/alps driver always receive group of 6 bytes packets so there are no
> missing bytes and no bytes were inserted between valid once.
> 
> This patch does not fix root of problem with ALPS devices found in Dell Latitude
> laptops but it does not allow to process some (invalid) subsequence of 6 bytes
> ALPS packets as 3 bytes PS/2 when driver is out of sync.
> 
> So with this patch trackstick input device does not report bogus data when
> also driver is out of sync, so trackstick should be usable on those machines.
> 
> Unknown is also information which ALPS devices send 3 bytes packets and why
> ALPS driver needs to handle also bare PS/2 packets. According to git (and plus
> historic tree from bitkeeper) code for processing 3 bytes bare PS/2 packets
> is there since first version of alps.c existence (since 2.6.9-rc2).

I believe it was to handle external devices plugged into PS/2 ports on
Dell laptops (maybe?). Dell laptops do not use active multiplexing
controller so everything comes mixed into single data stream.

> 
> We do not want to break some older ALPS devices. And disabling processing bare
> PS/2 packets when driver is out of sync should not break it.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org

Applied, thank you.

> ---
>  drivers/input/mouse/alps.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 2b0ae8c..a772745 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1156,7 +1156,9 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
>  {
>  	struct alps_data *priv = psmouse->private;
>  
> -	if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
> +	/* FIXME: Could we receive bare PS/2 packets from DualPoint devices?? */
> +	if (!psmouse->out_of_sync_cnt &&
> +	    (psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
>  		if (psmouse->pktcnt == 3) {
>  			alps_report_bare_ps2_packet(psmouse, psmouse->packet,
>  						    true);
> -- 
> 1.7.9.5
> 

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device
  2014-11-01 23:25   ` [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device Pali Rohár
@ 2014-11-08 21:00     ` Dmitry Torokhov
  0 siblings, 0 replies; 41+ messages in thread
From: Dmitry Torokhov @ 2014-11-08 21:00 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Sun, Nov 02, 2014 at 12:25:08AM +0100, Pali Rohár wrote:
> On some Dell Latitude laptops ALPS device or Dell EC send one invalid byte in
> 6 bytes ALPS packet. In this case psmouse driver enter out of sync state. It
> looks like that all other bytes in packets are valid and also device working
> properly. So there is no need to do full device reset, just need to wait
> for byte which match condition for first byte (start of packet). Because ALPS
> packets are bigger (6 or 8 bytes) default limit is small.
> 
> This patch increase number of invalid bytes to size of 2 ALPS packets which
> psmouse driver can drop before do full reset.
> 
> Resetting ALPS devices take some time and when doing reset on some Dell laptops
> touchpad, trackstick and also keyboard do not respond. So it is better to do it
> only if really necessary.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org

Applied, thank you.

> ---
>  drivers/input/mouse/alps.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index a772745..7c47e97 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -2391,6 +2391,9 @@ int alps_init(struct psmouse *psmouse)
>  	/* We are having trouble resyncing ALPS touchpads so disable it for now */
>  	psmouse->resync_time = 0;
>  
> +	/* Allow 2 invalid packets without resetting device */
> +	psmouse->resetafter = psmouse->pktsize * 2;
> +
>  	return 0;
>  
>  init_fail:
> -- 
> 1.7.9.5
> 

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-11-01 23:25   ` [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
@ 2014-11-09  7:50     ` Dmitry Torokhov
  2014-11-09 11:22       ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-11-09  7:50 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi Pali,

On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
> Sometimes on Dell Latitude laptops psmouse/alps driver receive invalid ALPS
> protocol V3 packets with bit7 set in last byte. More often it can be reproduced
> on Dell Latitude E6440 or E7440 with closed lid and pushing cover above touchpad.
> 
> If bit7 in last packet byte is set then it is not valid ALPS packet. I was told
> that ALPS devices never send these packets. It is not know yet who send those
> packets, it could be Dell EC, bug in BIOS and also bug in touchpad firmware...
> 
> With this patch alps driver does not process those invalid packets and drops it
> with PSMOUSE_FULL_PACKET so psmouse driver does not enter to out of sync state.
> 
> This patch fix problem when psmouse driver still resetting ALPS device when
> laptop lid is closed because of receiving invalid packets in out of sync state.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org
> ---
>  drivers/input/mouse/alps.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 7c47e97..e802d28 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1181,6 +1181,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
>  		return PSMOUSE_BAD_DATA;
>  	}
>  
> +	if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) {
> +		// For protocol V3, do not process data when last packet's bit7 is set
> +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> +			psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n",
> +				    psmouse->pktcnt - 1,
> +				    psmouse->packet[psmouse->pktcnt - 1]);
> +			return PSMOUSE_FULL_PACKET;
> +		}
> +	}

I wanted to apply it, but I would like some more data. Could you please
send me the dmesg with i8042.debug wit this patch in place?

Thanks!

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 4/4] input: alps: Fix trackstick detection
  2014-11-01 23:25   ` [PATCH v3 4/4] input: alps: Fix trackstick detection Pali Rohár
@ 2014-11-09  8:05     ` Dmitry Torokhov
  2014-11-09 11:30       ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-11-09  8:05 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

Hi Pali,

On Sun, Nov 02, 2014 at 12:25:10AM +0100, Pali Rohár wrote:
>  int alps_detect(struct psmouse *psmouse, bool set_properties)
>  {
> -	struct alps_data dummy;
> +	unsigned char e6[4];
>  
> -	if (alps_identify(psmouse, &dummy) < 0)
> -		return -1;
> +	/*
> +	 * Try "E6 report".
> +	 * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed.
> +	 * The bits 0-2 of the first byte will be 1s if some buttons are
> +	 * pressed.
> +	 */
> +	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
> +			 PSMOUSE_CMD_SETSCALE11, e6))
> +		return -EIO;
> +
> +	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 && e6[2] != 100))
> +		return -EINVAL;
>  
>  	if (set_properties) {
> +		/*
> +		 * NOTE: To detect model and trackstick presence we need to do
> +		 *       full device reset. To speed up detection and prevent
> +		 *       calling duplicate initialization sequence (both in
> +		 *       alps_detect() and alps_init()) we set model/protocol
> +		 *       version and correct name in alps_init() (which will
> +		 *       do full device reset). For now set name to DualPoint.
> +		 */
>  		psmouse->vendor = "ALPS";
> -		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
> -				"DualPoint TouchPad" : "GlidePoint";
> -		psmouse->model = dummy.proto_version << 8;
> +		psmouse->name = "DualPoint TouchPad";
>  	}
> +
>  	return 0;

We can't do this; going by e6 only will give us false positives and
alps_detect is supposed to be authoritative.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-11-09  7:50     ` Dmitry Torokhov
@ 2014-11-09 11:22       ` Pali Rohár
  2014-11-09 20:34         ` Dmitry Torokhov
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-09 11:22 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel


[-- Attachment #1.1: Type: Text/Plain, Size: 2381 bytes --]

On Sunday 09 November 2014 08:50:39 Dmitry Torokhov wrote:
> Hi Pali,
> 
> On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
> > Sometimes on Dell Latitude laptops psmouse/alps driver
> > receive invalid ALPS protocol V3 packets with bit7 set in
> > last byte. More often it can be reproduced on Dell Latitude
> > E6440 or E7440 with closed lid and pushing cover above
> > touchpad.
> > 
> > If bit7 in last packet byte is set then it is not valid ALPS
> > packet. I was told that ALPS devices never send these
> > packets. It is not know yet who send those packets, it
> > could be Dell EC, bug in BIOS and also bug in touchpad
> > firmware...
> > 
> > With this patch alps driver does not process those invalid
> > packets and drops it with PSMOUSE_FULL_PACKET so psmouse
> > driver does not enter to out of sync state.
> > 
> > This patch fix problem when psmouse driver still resetting
> > ALPS device when laptop lid is closed because of receiving
> > invalid packets in out of sync state.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > Cc: stable@vger.kernel.org
> > ---
> > 
> >  drivers/input/mouse/alps.c |   10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/drivers/input/mouse/alps.c
> > b/drivers/input/mouse/alps.c index 7c47e97..e802d28 100644
> > --- a/drivers/input/mouse/alps.c
> > +++ b/drivers/input/mouse/alps.c
> > @@ -1181,6 +1181,16 @@ static psmouse_ret_t
> > alps_process_byte(struct psmouse *psmouse)
> > 
> >  		return PSMOUSE_BAD_DATA;
> >  	
> >  	}
> > 
> > +	if (priv->proto_version == ALPS_PROTO_V3 &&
> > psmouse->pktcnt == psmouse->pktsize) { +		// For protocol
> > V3, do not process data when last packet's bit7 is set
> > +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> > +			psmouse_dbg(psmouse, "v3 discard packet[%i] = 
%x\n",
> > +				    psmouse->pktcnt - 1,
> > +				    psmouse->packet[psmouse->pktcnt - 1]);
> > +			return PSMOUSE_FULL_PACKET;
> > +		}
> > +	}
> 
> I wanted to apply it, but I would like some more data. Could
> you please send me the dmesg with i8042.debug wit this patch
> in place?
> 
> Thanks!

See attachment. It contains debug log from both i8042.debug=1 and 
psmouse.ko with applied all 4 patches.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #1.2: alps-i8042-lid-patches.log --]
[-- Type: text/x-log, Size: 192889 bytes --]

[  950.754275] i8042: [237297] 00 <- i8042 (interrupt, 1, 12)
[  950.755303] i8042: [237297] 00 <- i8042 (interrupt, 1, 12)
[  950.756406] i8042: [237298] 08 <- i8042 (interrupt, 1, 12)
[  950.757314] i8042: [237298] 40 <- i8042 (interrupt, 1, 12)
[  950.758340] i8042: [237298] 00 <- i8042 (interrupt, 1, 12)
[  950.763480] i8042: [237299] cf <- i8042 (interrupt, 1, 12)
[  950.764455] i8042: [237300] 00 <- i8042 (interrupt, 1, 12)
[  950.765511] i8042: [237300] 00 <- i8042 (interrupt, 1, 12)
[  950.766616] i8042: [237300] 08 <- i8042 (interrupt, 1, 12)
[  950.767526] i8042: [237300] 00 <- i8042 (interrupt, 1, 12)
[  950.768552] i8042: [237301] 00 <- i8042 (interrupt, 1, 12)
[  950.773513] i8042: [237302] 8f <- i8042 (interrupt, 1, 12)
[  950.774535] i8042: [237302] 00 <- i8042 (interrupt, 1, 12)
[  950.775560] i8042: [237302] 00 <- i8042 (interrupt, 1, 12)
[  950.776666] i8042: [237303] 08 <- i8042 (interrupt, 1, 12)
[  950.777573] i8042: [237303] 40 <- i8042 (interrupt, 1, 12)
[  950.778599] i8042: [237303] 00 <- i8042 (interrupt, 1, 12)
[  950.783754] i8042: [237304] cf <- i8042 (interrupt, 1, 12)
[  950.784779] i8042: [237305] 00 <- i8042 (interrupt, 1, 12)
[  950.785805] i8042: [237305] 70 <- i8042 (interrupt, 1, 12)
[  950.786910] i8042: [237305] 7f <- i8042 (interrupt, 1, 12)
[  950.790897] i8042: [237306] 00 <- i8042 (interrupt, 1, 12)
[  950.791138] i8042: [237306] ff <- i8042 (interrupt, 1, 12)
[  950.791142] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.793936] i8042: [237307] 8f <- i8042 (interrupt, 1, 12)
[  950.794962] i8042: [237307] 00 <- i8042 (interrupt, 1, 12)
[  950.795988] i8042: [237307] 00 <- i8042 (interrupt, 1, 12)
[  950.797095] i8042: [237308] 08 <- i8042 (interrupt, 1, 12)
[  950.798004] i8042: [237308] 40 <- i8042 (interrupt, 1, 12)
[  950.799031] i8042: [237308] 00 <- i8042 (interrupt, 1, 12)
[  950.804070] i8042: [237309] cf <- i8042 (interrupt, 1, 12)
[  950.805097] i8042: [237310] 00 <- i8042 (interrupt, 1, 12)
[  950.806203] i8042: [237310] 70 <- i8042 (interrupt, 1, 12)
[  950.807112] i8042: [237310] 7f <- i8042 (interrupt, 1, 12)
[  950.808139] i8042: [237310] 00 <- i8042 (interrupt, 1, 12)
[  950.809166] i8042: [237311] ff <- i8042 (interrupt, 1, 12)
[  950.809169] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.814304] i8042: [237312] cf <- i8042 (interrupt, 1, 12)
[  950.815330] i8042: [237312] 00 <- i8042 (interrupt, 1, 12)
[  950.816438] i8042: [237313] 00 <- i8042 (interrupt, 1, 12)
[  950.817346] i8042: [237313] 08 <- i8042 (interrupt, 1, 12)
[  950.818374] i8042: [237313] 00 <- i8042 (interrupt, 1, 12)
[  950.819400] i8042: [237313] 00 <- i8042 (interrupt, 1, 12)
[  950.824440] i8042: [237315] cf <- i8042 (interrupt, 1, 12)
[  950.825451] i8042: [237315] 00 <- i8042 (interrupt, 1, 12)
[  950.826558] i8042: [237315] 00 <- i8042 (interrupt, 1, 12)
[  950.827496] i8042: [237315] 08 <- i8042 (interrupt, 1, 12)
[  950.828524] i8042: [237316] 00 <- i8042 (interrupt, 1, 12)
[  950.829577] i8042: [237316] 00 <- i8042 (interrupt, 1, 12)
[  950.834617] i8042: [237317] 8f <- i8042 (interrupt, 1, 12)
[  950.835643] i8042: [237317] 00 <- i8042 (interrupt, 1, 12)
[  950.836693] i8042: [237318] 00 <- i8042 (interrupt, 1, 12)
[  950.837628] i8042: [237318] 08 <- i8042 (interrupt, 1, 12)
[  950.838685] i8042: [237318] 40 <- i8042 (interrupt, 1, 12)
[  950.839714] i8042: [237318] 00 <- i8042 (interrupt, 1, 12)
[  950.844836] i8042: [237320] cf <- i8042 (interrupt, 1, 12)
[  950.845861] i8042: [237320] 00 <- i8042 (interrupt, 1, 12)
[  950.846967] i8042: [237320] 78 <- i8042 (interrupt, 1, 12)
[  950.847876] i8042: [237320] 7f <- i8042 (interrupt, 1, 12)
[  950.848904] i8042: [237321] 06 <- i8042 (interrupt, 1, 12)
[  950.849930] i8042: [237321] ff <- i8042 (interrupt, 1, 12)
[  950.849945] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.855003] i8042: [237322] 8f <- i8042 (interrupt, 1, 12)
[  950.856027] i8042: [237322] 00 <- i8042 (interrupt, 1, 12)
[  950.857133] i8042: [237323] 00 <- i8042 (interrupt, 1, 12)
[  950.858044] i8042: [237323] 08 <- i8042 (interrupt, 1, 12)
[  950.859071] i8042: [237323] 40 <- i8042 (interrupt, 1, 12)
[  950.860098] i8042: [237323] 00 <- i8042 (interrupt, 1, 12)
[  950.865135] i8042: [237325] cf <- i8042 (interrupt, 1, 12)
[  950.866108] i8042: [237325] 00 <- i8042 (interrupt, 1, 12)
[  950.867211] i8042: [237325] 78 <- i8042 (interrupt, 1, 12)
[  950.868730] i8042: [237326] 7f <- i8042 (interrupt, 1, 12)
[  950.869758] i8042: [237326] 06 <- i8042 (interrupt, 1, 12)
[  950.870784] i8042: [237326] ff <- i8042 (interrupt, 1, 12)
[  950.870791] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.875350] i8042: [237327] 8f <- i8042 (interrupt, 1, 12)
[  950.876449] i8042: [237328] 00 <- i8042 (interrupt, 1, 12)
[  950.877357] i8042: [237328] 00 <- i8042 (interrupt, 1, 12)
[  950.878383] i8042: [237328] 08 <- i8042 (interrupt, 1, 12)
[  950.879412] i8042: [237328] 40 <- i8042 (interrupt, 1, 12)
[  950.880440] i8042: [237329] 00 <- i8042 (interrupt, 1, 12)
[  950.885579] i8042: [237330] cf <- i8042 (interrupt, 1, 12)
[  950.886684] i8042: [237330] 00 <- i8042 (interrupt, 1, 12)
[  950.887594] i8042: [237330] 00 <- i8042 (interrupt, 1, 12)
[  950.888621] i8042: [237331] 08 <- i8042 (interrupt, 1, 12)
[  950.889647] i8042: [237331] 00 <- i8042 (interrupt, 1, 12)
[  950.890674] i8042: [237331] 00 <- i8042 (interrupt, 1, 12)
[  950.895716] i8042: [237332] 8f <- i8042 (interrupt, 1, 12)
[  950.896823] i8042: [237333] 00 <- i8042 (interrupt, 1, 12)
[  950.897729] i8042: [237333] 00 <- i8042 (interrupt, 1, 12)
[  950.898756] i8042: [237333] 08 <- i8042 (interrupt, 1, 12)
[  950.899744] i8042: [237333] 40 <- i8042 (interrupt, 1, 12)
[  950.900810] i8042: [237334] 00 <- i8042 (interrupt, 1, 12)
[  950.905848] i8042: [237335] cf <- i8042 (interrupt, 1, 12)
[  950.906955] i8042: [237335] 04 <- i8042 (interrupt, 1, 12)
[  950.907865] i8042: [237335] 78 <- i8042 (interrupt, 1, 12)
[  950.908894] i8042: [237336] 7f <- i8042 (interrupt, 1, 12)
[  950.910196] i8042: [237336] 06 <- i8042 (interrupt, 1, 12)
[  950.910887] i8042: [237336] ff <- i8042 (interrupt, 1, 12)
[  950.910893] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.916043] i8042: [237337] 8f <- i8042 (interrupt, 1, 12)
[  950.917149] i8042: [237338] 00 <- i8042 (interrupt, 1, 12)
[  950.918057] i8042: [237338] 00 <- i8042 (interrupt, 1, 12)
[  950.919084] i8042: [237338] 08 <- i8042 (interrupt, 1, 12)
[  950.920110] i8042: [237338] 40 <- i8042 (interrupt, 1, 12)
[  950.921136] i8042: [237339] 00 <- i8042 (interrupt, 1, 12)
[  950.926346] i8042: [237340] cf <- i8042 (interrupt, 1, 12)
[  950.927253] i8042: [237340] 00 <- i8042 (interrupt, 1, 12)
[  950.928279] i8042: [237340] 78 <- i8042 (interrupt, 1, 12)
[  950.929307] i8042: [237341] 7f <- i8042 (interrupt, 1, 12)
[  950.930332] i8042: [237341] 06 <- i8042 (interrupt, 1, 12)
[  950.931359] i8042: [237341] ff <- i8042 (interrupt, 1, 12)
[  950.931365] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.936480] i8042: [237343] 8f <- i8042 (interrupt, 1, 12)
[  950.937503] i8042: [237343] 00 <- i8042 (interrupt, 1, 12)
[  950.938529] i8042: [237343] 00 <- i8042 (interrupt, 1, 12)
[  950.939529] i8042: [237343] 08 <- i8042 (interrupt, 1, 12)
[  950.940524] i8042: [237344] 40 <- i8042 (interrupt, 1, 12)
[  950.941580] i8042: [237344] 00 <- i8042 (interrupt, 1, 12)
[  950.946729] i8042: [237345] cf <- i8042 (interrupt, 1, 12)
[  950.947755] i8042: [237345] 00 <- i8042 (interrupt, 1, 12)
[  950.948783] i8042: [237346] 78 <- i8042 (interrupt, 1, 12)
[  950.949808] i8042: [237346] 7f <- i8042 (interrupt, 1, 12)
[  950.950834] i8042: [237346] 06 <- i8042 (interrupt, 1, 12)
[  950.951861] i8042: [237346] ff <- i8042 (interrupt, 1, 12)
[  950.951867] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.956801] i8042: [237348] 8f <- i8042 (interrupt, 1, 12)
[  950.957825] i8042: [237348] 00 <- i8042 (interrupt, 1, 12)
[  950.958852] i8042: [237348] 00 <- i8042 (interrupt, 1, 12)
[  950.959878] i8042: [237348] 08 <- i8042 (interrupt, 1, 12)
[  950.960906] i8042: [237349] 40 <- i8042 (interrupt, 1, 12)
[  950.961930] i8042: [237349] 00 <- i8042 (interrupt, 1, 12)
[  950.966974] i8042: [237350] cf <- i8042 (interrupt, 1, 12)
[  950.967999] i8042: [237350] 00 <- i8042 (interrupt, 1, 12)
[  950.969026] i8042: [237351] 78 <- i8042 (interrupt, 1, 12)
[  950.970052] i8042: [237351] 7f <- i8042 (interrupt, 1, 12)
[  950.971078] i8042: [237351] 06 <- i8042 (interrupt, 1, 12)
[  950.972107] i8042: [237351] ff <- i8042 (interrupt, 1, 12)
[  950.972113] psmouse serio1: alps: v3 discard packet[5] = ff
[  950.977225] i8042: [237353] cf <- i8042 (interrupt, 1, 12)
[  950.978249] i8042: [237353] 00 <- i8042 (interrupt, 1, 12)
[  950.979278] i8042: [237353] 00 <- i8042 (interrupt, 1, 12)
[  950.980301] i8042: [237353] 08 <- i8042 (interrupt, 1, 12)
[  950.981329] i8042: [237354] 00 <- i8042 (interrupt, 1, 12)
[  950.982355] i8042: [237354] 00 <- i8042 (interrupt, 1, 12)
[  950.987355] i8042: [237355] 8f <- i8042 (interrupt, 1, 12)
[  950.988264] i8042: [237355] 00 <- i8042 (interrupt, 1, 12)
[  950.989292] i8042: [237356] 00 <- i8042 (interrupt, 1, 12)
[  950.990316] i8042: [237356] 08 <- i8042 (interrupt, 1, 12)
[  950.991343] i8042: [237356] 40 <- i8042 (interrupt, 1, 12)
[  950.992369] i8042: [237356] 00 <- i8042 (interrupt, 1, 12)
[  950.997489] i8042: [237358] cf <- i8042 (interrupt, 1, 12)
[  950.998513] i8042: [237358] 00 <- i8042 (interrupt, 1, 12)
[  950.999538] i8042: [237358] 70 <- i8042 (interrupt, 1, 12)
[  951.000524] i8042: [237359] 7f <- i8042 (interrupt, 1, 12)
[  951.001592] i8042: [237359] 02 <- i8042 (interrupt, 1, 12)
[  951.002618] i8042: [237359] ff <- i8042 (interrupt, 1, 12)
[  951.002624] psmouse serio1: alps: v3 discard packet[5] = ff
[  951.007672] i8042: [237360] 8f <- i8042 (interrupt, 1, 12)
[  951.008684] i8042: [237361] 00 <- i8042 (interrupt, 1, 12)
[  951.009726] i8042: [237361] 00 <- i8042 (interrupt, 1, 12)
[  951.010752] i8042: [237361] 08 <- i8042 (interrupt, 1, 12)
[  951.011779] i8042: [237361] 40 <- i8042 (interrupt, 1, 12)
[  951.012805] i8042: [237362] 00 <- i8042 (interrupt, 1, 12)
[  951.017765] i8042: [237363] cf <- i8042 (interrupt, 1, 12)
[  951.018790] i8042: [237363] 00 <- i8042 (interrupt, 1, 12)
[  951.019816] i8042: [237363] 70 <- i8042 (interrupt, 1, 12)
[  951.020844] i8042: [237364] 7f <- i8042 (interrupt, 1, 12)
[  951.021870] i8042: [237364] 02 <- i8042 (interrupt, 1, 12)
[  951.022897] i8042: [237364] ff <- i8042 (interrupt, 1, 12)
[  951.022904] psmouse serio1: alps: v3 discard packet[5] = ff
[  951.027973] i8042: [237365] 8f <- i8042 (interrupt, 1, 12)
[  951.028999] i8042: [237366] 00 <- i8042 (interrupt, 1, 12)
[  951.030024] i8042: [237366] 00 <- i8042 (interrupt, 1, 12)
[  951.031052] i8042: [237366] 08 <- i8042 (interrupt, 1, 12)
[  951.032375] i8042: [237366] 40 <- i8042 (interrupt, 1, 12)
[  951.033084] i8042: [237367] 00 <- i8042 (interrupt, 1, 12)
[  951.038173] i8042: [237368] cf <- i8042 (interrupt, 1, 12)
[  951.039232] i8042: [237368] 00 <- i8042 (interrupt, 1, 12)
[  951.040258] i8042: [237368] 00 <- i8042 (interrupt, 1, 12)
[  951.041290] i8042: [237369] 08 <- i8042 (interrupt, 1, 12)
[  951.042297] i8042: [237369] 00 <- i8042 (interrupt, 1, 12)
[  951.043327] i8042: [237369] 00 <- i8042 (interrupt, 1, 12)
[  951.048283] i8042: [237370] cf <- i8042 (interrupt, 1, 12)
[  951.049309] i8042: [237371] 00 <- i8042 (interrupt, 1, 12)
[  951.050281] i8042: [237371] 00 <- i8042 (interrupt, 1, 12)
[  951.051306] i8042: [237371] 08 <- i8042 (interrupt, 1, 12)
[  951.052352] i8042: [237371] 00 <- i8042 (interrupt, 1, 12)
[  951.053416] i8042: [237372] 00 <- i8042 (interrupt, 1, 12)
[  951.058493] i8042: [237373] cf <- i8042 (interrupt, 1, 12)
[  951.059519] i8042: [237373] 00 <- i8042 (interrupt, 1, 12)
[  951.060562] i8042: [237374] 00 <- i8042 (interrupt, 1, 12)
[  951.061555] i8042: [237374] 08 <- i8042 (interrupt, 1, 12)
[  951.062581] i8042: [237374] 00 <- i8042 (interrupt, 1, 12)
[  951.064163] i8042: [237374] 00 <- i8042 (interrupt, 1, 12)
[  951.068657] i8042: [237376] cf <- i8042 (interrupt, 1, 12)
[  951.069670] i8042: [237376] 00 <- i8042 (interrupt, 1, 12)
[  951.070678] i8042: [237376] 00 <- i8042 (interrupt, 1, 12)
[  951.071746] i8042: [237376] 08 <- i8042 (interrupt, 1, 12)
[  951.072750] i8042: [237377] 00 <- i8042 (interrupt, 1, 12)
[  951.073776] i8042: [237377] 00 <- i8042 (interrupt, 1, 12)
[  951.078894] i8042: [237378] 8f <- i8042 (interrupt, 1, 12)
[  951.079921] i8042: [237378] 00 <- i8042 (interrupt, 1, 12)
[  951.080949] i8042: [237379] 00 <- i8042 (interrupt, 1, 12)
[  951.081975] i8042: [237379] 08 <- i8042 (interrupt, 1, 12)
[  951.083001] i8042: [237379] 00 <- i8042 (interrupt, 1, 12)
[  951.084003] i8042: [237379] 00 <- i8042 (interrupt, 1, 12)
[  951.089002] i8042: [237381] 8f <- i8042 (interrupt, 1, 12)
[  951.090028] i8042: [237381] 00 <- i8042 (interrupt, 1, 12)
[  951.091055] i8042: [237381] 00 <- i8042 (interrupt, 1, 12)
[  951.092081] i8042: [237381] 08 <- i8042 (interrupt, 1, 12)
[  951.093109] i8042: [237382] 00 <- i8042 (interrupt, 1, 12)
[  951.094137] i8042: [237382] 00 <- i8042 (interrupt, 1, 12)
[  951.099227] i8042: [237383] 8f <- i8042 (interrupt, 1, 12)
[  951.100256] i8042: [237383] 00 <- i8042 (interrupt, 1, 12)
[  951.101286] i8042: [237384] 00 <- i8042 (interrupt, 1, 12)
[  951.102308] i8042: [237384] 08 <- i8042 (interrupt, 1, 12)
[  951.103338] i8042: [237384] 00 <- i8042 (interrupt, 1, 12)
[  951.104364] i8042: [237384] 00 <- i8042 (interrupt, 1, 12)
[  951.109438] i8042: [237386] 8f <- i8042 (interrupt, 1, 12)
[  951.110464] i8042: [237386] 00 <- i8042 (interrupt, 1, 12)
[  951.111492] i8042: [237386] 00 <- i8042 (interrupt, 1, 12)
[  951.112518] i8042: [237386] 08 <- i8042 (interrupt, 1, 12)
[  951.113547] i8042: [237387] 00 <- i8042 (interrupt, 1, 12)
[  951.114573] i8042: [237387] 00 <- i8042 (interrupt, 1, 12)
[  951.119553] i8042: [237388] 8f <- i8042 (interrupt, 1, 12)
[  951.120561] i8042: [237389] 00 <- i8042 (interrupt, 1, 12)
[  951.121587] i8042: [237389] 00 <- i8042 (interrupt, 1, 12)
[  951.122613] i8042: [237389] 08 <- i8042 (interrupt, 1, 12)
[  951.123640] i8042: [237389] 00 <- i8042 (interrupt, 1, 12)
[  951.124612] i8042: [237390] 00 <- i8042 (interrupt, 1, 12)
[  951.129761] i8042: [237391] 8f <- i8042 (interrupt, 1, 12)
[  951.130788] i8042: [237391] 00 <- i8042 (interrupt, 1, 12)
[  951.131789] i8042: [237391] 00 <- i8042 (interrupt, 1, 12)
[  951.132813] i8042: [237392] 08 <- i8042 (interrupt, 1, 12)
[  951.133869] i8042: [237392] 00 <- i8042 (interrupt, 1, 12)
[  951.134896] i8042: [237392] 00 <- i8042 (interrupt, 1, 12)
[  951.139872] i8042: [237393] 8f <- i8042 (interrupt, 1, 12)
[  951.140897] i8042: [237394] 00 <- i8042 (interrupt, 1, 12)
[  951.141924] i8042: [237394] 00 <- i8042 (interrupt, 1, 12)
[  951.142950] i8042: [237394] 08 <- i8042 (interrupt, 1, 12)
[  951.143978] i8042: [237394] 00 <- i8042 (interrupt, 1, 12)
[  951.145005] i8042: [237395] 00 <- i8042 (interrupt, 1, 12)
[  951.150074] i8042: [237396] 8f <- i8042 (interrupt, 1, 12)
[  951.151082] i8042: [237396] 00 <- i8042 (interrupt, 1, 12)
[  951.152127] i8042: [237396] 00 <- i8042 (interrupt, 1, 12)
[  951.153178] i8042: [237397] 08 <- i8042 (interrupt, 1, 12)
[  951.154497] i8042: [237397] 00 <- i8042 (interrupt, 1, 12)
[  951.155206] i8042: [237397] 00 <- i8042 (interrupt, 1, 12)
[  951.160281] i8042: [237398] 8f <- i8042 (interrupt, 1, 12)
[  951.161888] i8042: [237399] 00 <- i8042 (interrupt, 1, 12)
[  951.162911] i8042: [237399] 00 <- i8042 (interrupt, 1, 12)
[  951.163937] i8042: [237399] 08 <- i8042 (interrupt, 1, 12)
[  951.164968] i8042: [237400] 00 <- i8042 (interrupt, 1, 12)
[  951.166072] i8042: [237400] 00 <- i8042 (interrupt, 1, 12)
[  951.170403] i8042: [237401] 8f <- i8042 (interrupt, 1, 12)
[  951.171431] i8042: [237401] 00 <- i8042 (interrupt, 1, 12)
[  951.172457] i8042: [237401] 00 <- i8042 (interrupt, 1, 12)
[  951.173483] i8042: [237402] 08 <- i8042 (interrupt, 1, 12)
[  951.174512] i8042: [237402] 00 <- i8042 (interrupt, 1, 12)
[  951.175618] i8042: [237402] 00 <- i8042 (interrupt, 1, 12)
[  951.180661] i8042: [237404] 8f <- i8042 (interrupt, 1, 12)
[  951.181689] i8042: [237404] 00 <- i8042 (interrupt, 1, 12)
[  951.182716] i8042: [237404] 00 <- i8042 (interrupt, 1, 12)
[  951.183743] i8042: [237404] 08 <- i8042 (interrupt, 1, 12)
[  951.184768] i8042: [237405] 00 <- i8042 (interrupt, 1, 12)
[  951.185873] i8042: [237405] 00 <- i8042 (interrupt, 1, 12)
[  951.190797] i8042: [237406] 8f <- i8042 (interrupt, 1, 12)
[  951.191823] i8042: [237406] 00 <- i8042 (interrupt, 1, 12)
[  951.192851] i8042: [237407] 00 <- i8042 (interrupt, 1, 12)
[  951.193876] i8042: [237407] 08 <- i8042 (interrupt, 1, 12)
[  951.194973] i8042: [237407] 00 <- i8042 (interrupt, 1, 12)
[  951.195883] i8042: [237407] 00 <- i8042 (interrupt, 1, 12)
[  951.200923] i8042: [237409] 8f <- i8042 (interrupt, 1, 12)
[  951.201949] i8042: [237409] 00 <- i8042 (interrupt, 1, 12)
[  951.202976] i8042: [237409] 00 <- i8042 (interrupt, 1, 12)
[  951.204004] i8042: [237409] 08 <- i8042 (interrupt, 1, 12)
[  951.205109] i8042: [237410] 00 <- i8042 (interrupt, 1, 12)
[  951.206004] i8042: [237410] 00 <- i8042 (interrupt, 1, 12)
[  951.211147] i8042: [237411] 8f <- i8042 (interrupt, 1, 12)
[  951.212203] i8042: [237411] 00 <- i8042 (interrupt, 1, 12)
[  951.213231] i8042: [237412] 00 <- i8042 (interrupt, 1, 12)
[  951.214255] i8042: [237412] 08 <- i8042 (interrupt, 1, 12)
[  951.215360] i8042: [237412] 00 <- i8042 (interrupt, 1, 12)
[  951.216270] i8042: [237412] 00 <- i8042 (interrupt, 1, 12)
[  951.221308] i8042: [237414] 8f <- i8042 (interrupt, 1, 12)
[  951.222335] i8042: [237414] 00 <- i8042 (interrupt, 1, 12)
[  951.223361] i8042: [237414] 00 <- i8042 (interrupt, 1, 12)
[  951.224387] i8042: [237414] 08 <- i8042 (interrupt, 1, 12)
[  951.225496] i8042: [237415] 00 <- i8042 (interrupt, 1, 12)
[  951.226402] i8042: [237415] 00 <- i8042 (interrupt, 1, 12)
[  951.231443] i8042: [237416] 8f <- i8042 (interrupt, 1, 12)
[  951.232467] i8042: [237416] 00 <- i8042 (interrupt, 1, 12)
[  951.233493] i8042: [237417] 00 <- i8042 (interrupt, 1, 12)
[  951.234521] i8042: [237417] 08 <- i8042 (interrupt, 1, 12)
[  951.235626] i8042: [237417] 00 <- i8042 (interrupt, 1, 12)
[  951.236534] i8042: [237417] 00 <- i8042 (interrupt, 1, 12)
[  951.241690] i8042: [237419] 8f <- i8042 (interrupt, 1, 12)
[  951.242714] i8042: [237419] 00 <- i8042 (interrupt, 1, 12)
[  951.243743] i8042: [237419] 00 <- i8042 (interrupt, 1, 12)
[  951.244841] i8042: [237420] 08 <- i8042 (interrupt, 1, 12)
[  951.245747] i8042: [237420] 00 <- i8042 (interrupt, 1, 12)
[  951.246773] i8042: [237420] 00 <- i8042 (interrupt, 1, 12)
[  951.251758] i8042: [237421] 8f <- i8042 (interrupt, 1, 12)
[  951.252838] i8042: [237422] 00 <- i8042 (interrupt, 1, 12)
[  951.253864] i8042: [237422] 00 <- i8042 (interrupt, 1, 12)
[  951.254972] i8042: [237422] 08 <- i8042 (interrupt, 1, 12)
[  951.255879] i8042: [237422] 00 <- i8042 (interrupt, 1, 12)
[  951.256907] i8042: [237423] 00 <- i8042 (interrupt, 1, 12)
[  951.262043] i8042: [237424] 8f <- i8042 (interrupt, 1, 12)
[  951.263067] i8042: [237424] 00 <- i8042 (interrupt, 1, 12)
[  951.264053] i8042: [237424] 00 <- i8042 (interrupt, 1, 12)
[  951.265155] i8042: [237425] 08 <- i8042 (interrupt, 1, 12)
[  951.266107] i8042: [237425] 00 <- i8042 (interrupt, 1, 12)
[  951.267133] i8042: [237425] 00 <- i8042 (interrupt, 1, 12)
[  951.272172] i8042: [237426] 8f <- i8042 (interrupt, 1, 12)
[  951.273197] i8042: [237427] 00 <- i8042 (interrupt, 1, 12)
[  951.274223] i8042: [237427] 00 <- i8042 (interrupt, 1, 12)
[  951.275329] i8042: [237427] 08 <- i8042 (interrupt, 1, 12)
[  951.276526] i8042: [237427] 00 <- i8042 (interrupt, 1, 12)
[  951.277235] i8042: [237428] 00 <- i8042 (interrupt, 1, 12)
[  951.282394] i8042: [237429] 8f <- i8042 (interrupt, 1, 12)
[  951.283423] i8042: [237429] 00 <- i8042 (interrupt, 1, 12)
[  951.284448] i8042: [237429] 00 <- i8042 (interrupt, 1, 12)
[  951.285556] i8042: [237430] 08 <- i8042 (interrupt, 1, 12)
[  951.286464] i8042: [237430] 00 <- i8042 (interrupt, 1, 12)
[  951.287490] i8042: [237430] 00 <- i8042 (interrupt, 1, 12)
[  951.292475] i8042: [237431] 8f <- i8042 (interrupt, 1, 12)
[  951.293555] i8042: [237432] 00 <- i8042 (interrupt, 1, 12)
[  951.294655] i8042: [237432] 00 <- i8042 (interrupt, 1, 12)
[  951.295563] i8042: [237432] 08 <- i8042 (interrupt, 1, 12)
[  951.296590] i8042: [237432] 00 <- i8042 (interrupt, 1, 12)
[  951.297617] i8042: [237433] 00 <- i8042 (interrupt, 1, 12)
[  951.302658] i8042: [237434] 8f <- i8042 (interrupt, 1, 12)
[  951.303684] i8042: [237434] 00 <- i8042 (interrupt, 1, 12)
[  951.304792] i8042: [237435] 00 <- i8042 (interrupt, 1, 12)
[  951.305700] i8042: [237435] 08 <- i8042 (interrupt, 1, 12)
[  951.306725] i8042: [237435] 00 <- i8042 (interrupt, 1, 12)
[  951.307752] i8042: [237435] 00 <- i8042 (interrupt, 1, 12)
[  951.312909] i8042: [237437] 8f <- i8042 (interrupt, 1, 12)
[  951.313936] i8042: [237437] 00 <- i8042 (interrupt, 1, 12)
[  951.315043] i8042: [237437] 00 <- i8042 (interrupt, 1, 12)
[  951.315951] i8042: [237437] 08 <- i8042 (interrupt, 1, 12)
[  951.316977] i8042: [237438] 00 <- i8042 (interrupt, 1, 12)
[  951.318002] i8042: [237438] 00 <- i8042 (interrupt, 1, 12)
[  951.323043] i8042: [237439] 8f <- i8042 (interrupt, 1, 12)
[  951.324070] i8042: [237439] 00 <- i8042 (interrupt, 1, 12)
[  951.325175] i8042: [237440] 00 <- i8042 (interrupt, 1, 12)
[  951.326057] i8042: [237440] 08 <- i8042 (interrupt, 1, 12)
[  951.327054] i8042: [237440] 00 <- i8042 (interrupt, 1, 12)
[  951.328138] i8042: [237440] 00 <- i8042 (interrupt, 1, 12)
[  951.333182] i8042: [237442] 8f <- i8042 (interrupt, 1, 12)
[  951.334190] i8042: [237442] 00 <- i8042 (interrupt, 1, 12)
[  951.335294] i8042: [237442] 00 <- i8042 (interrupt, 1, 12)
[  951.336203] i8042: [237442] 08 <- i8042 (interrupt, 1, 12)
[  951.337233] i8042: [237443] 00 <- i8042 (interrupt, 1, 12)
[  951.338257] i8042: [237443] 00 <- i8042 (interrupt, 1, 12)
[  952.208302] i8042: [237660] 8f <- i8042 (interrupt, 1, 12)
[  952.209332] i8042: [237661] 00 <- i8042 (interrupt, 1, 12)
[  952.210356] i8042: [237661] 00 <- i8042 (interrupt, 1, 12)
[  952.211461] i8042: [237661] 08 <- i8042 (interrupt, 1, 12)
[  952.212371] i8042: [237661] 40 <- i8042 (interrupt, 1, 12)
[  952.213398] i8042: [237662] 00 <- i8042 (interrupt, 1, 12)
[  952.218437] i8042: [237663] cf <- i8042 (interrupt, 1, 12)
[  952.219461] i8042: [237663] 00 <- i8042 (interrupt, 1, 12)
[  952.220489] i8042: [237663] 00 <- i8042 (interrupt, 1, 12)
[  952.221595] i8042: [237664] 08 <- i8042 (interrupt, 1, 12)
[  952.222503] i8042: [237664] 00 <- i8042 (interrupt, 1, 12)
[  952.223474] i8042: [237664] 00 <- i8042 (interrupt, 1, 12)
[  952.228667] i8042: [237665] 8f <- i8042 (interrupt, 1, 12)
[  952.229694] i8042: [237666] 00 <- i8042 (interrupt, 1, 12)
[  952.230800] i8042: [237666] 00 <- i8042 (interrupt, 1, 12)
[  952.231708] i8042: [237666] 08 <- i8042 (interrupt, 1, 12)
[  952.232735] i8042: [237666] 40 <- i8042 (interrupt, 1, 12)
[  952.233766] i8042: [237667] 00 <- i8042 (interrupt, 1, 12)
[  952.238763] i8042: [237668] cf <- i8042 (interrupt, 1, 12)
[  952.239787] i8042: [237668] 00 <- i8042 (interrupt, 1, 12)
[  952.240893] i8042: [237668] 70 <- i8042 (interrupt, 1, 12)
[  952.241805] i8042: [237669] 7f <- i8042 (interrupt, 1, 12)
[  952.242813] i8042: [237669] 00 <- i8042 (interrupt, 1, 12)
[  952.243837] i8042: [237669] ff <- i8042 (interrupt, 1, 12)
[  952.243843] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.248995] i8042: [237670] 8f <- i8042 (interrupt, 1, 12)
[  952.250020] i8042: [237671] 00 <- i8042 (interrupt, 1, 12)
[  952.251126] i8042: [237671] 00 <- i8042 (interrupt, 1, 12)
[  952.252032] i8042: [237671] 08 <- i8042 (interrupt, 1, 12)
[  952.253060] i8042: [237671] 40 <- i8042 (interrupt, 1, 12)
[  952.254386] i8042: [237672] 00 <- i8042 (interrupt, 1, 12)
[  952.259151] i8042: [237673] cf <- i8042 (interrupt, 1, 12)
[  952.260176] i8042: [237673] 00 <- i8042 (interrupt, 1, 12)
[  952.261281] i8042: [237674] 00 <- i8042 (interrupt, 1, 12)
[  952.262247] i8042: [237674] 08 <- i8042 (interrupt, 1, 12)
[  952.263273] i8042: [237674] 00 <- i8042 (interrupt, 1, 12)
[  952.264302] i8042: [237674] 00 <- i8042 (interrupt, 1, 12)
[  952.269339] i8042: [237676] 8f <- i8042 (interrupt, 1, 12)
[  952.270364] i8042: [237676] 00 <- i8042 (interrupt, 1, 12)
[  952.271471] i8042: [237676] 00 <- i8042 (interrupt, 1, 12)
[  952.272379] i8042: [237676] 08 <- i8042 (interrupt, 1, 12)
[  952.273408] i8042: [237677] 40 <- i8042 (interrupt, 1, 12)
[  952.274431] i8042: [237677] 00 <- i8042 (interrupt, 1, 12)
[  952.279472] i8042: [237678] cf <- i8042 (interrupt, 1, 12)
[  952.280567] i8042: [237678] 5c <- i8042 (interrupt, 1, 12)
[  952.281449] i8042: [237679] 7c <- i8042 (interrupt, 1, 12)
[  952.282504] i8042: [237679] 7f <- i8042 (interrupt, 1, 12)
[  952.283531] i8042: [237679] 16 <- i8042 (interrupt, 1, 12)
[  952.284557] i8042: [237679] ff <- i8042 (interrupt, 1, 12)
[  952.284564] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.289713] i8042: [237681] cf <- i8042 (interrupt, 1, 12)
[  952.290820] i8042: [237681] 00 <- i8042 (interrupt, 1, 12)
[  952.291728] i8042: [237681] 00 <- i8042 (interrupt, 1, 12)
[  952.292699] i8042: [237681] 08 <- i8042 (interrupt, 1, 12)
[  952.293724] i8042: [237682] 00 <- i8042 (interrupt, 1, 12)
[  952.294808] i8042: [237682] 00 <- i8042 (interrupt, 1, 12)
[  952.299847] i8042: [237683] cf <- i8042 (interrupt, 1, 12)
[  952.300955] i8042: [237683] 00 <- i8042 (interrupt, 1, 12)
[  952.301862] i8042: [237684] 00 <- i8042 (interrupt, 1, 12)
[  952.302890] i8042: [237684] 08 <- i8042 (interrupt, 1, 12)
[  952.303917] i8042: [237684] 00 <- i8042 (interrupt, 1, 12)
[  952.304919] i8042: [237684] 00 <- i8042 (interrupt, 1, 12)
[  952.310102] i8042: [237686] 8f <- i8042 (interrupt, 1, 12)
[  952.311208] i8042: [237686] 00 <- i8042 (interrupt, 1, 12)
[  952.312116] i8042: [237686] 00 <- i8042 (interrupt, 1, 12)
[  952.313144] i8042: [237686] 08 <- i8042 (interrupt, 1, 12)
[  952.314170] i8042: [237687] 40 <- i8042 (interrupt, 1, 12)
[  952.315196] i8042: [237687] 00 <- i8042 (interrupt, 1, 12)
[  952.320235] i8042: [237688] cf <- i8042 (interrupt, 1, 12)
[  952.321343] i8042: [237689] 00 <- i8042 (interrupt, 1, 12)
[  952.322250] i8042: [237689] 00 <- i8042 (interrupt, 1, 12)
[  952.323277] i8042: [237689] 08 <- i8042 (interrupt, 1, 12)
[  952.324303] i8042: [237689] 00 <- i8042 (interrupt, 1, 12)
[  952.325332] i8042: [237690] 00 <- i8042 (interrupt, 1, 12)
[  952.330442] i8042: [237691] 8f <- i8042 (interrupt, 1, 12)
[  952.331349] i8042: [237691] 00 <- i8042 (interrupt, 1, 12)
[  952.332375] i8042: [237691] 00 <- i8042 (interrupt, 1, 12)
[  952.334443] i8042: [237692] 08 <- i8042 (interrupt, 1, 12)
[  952.335469] i8042: [237692] 40 <- i8042 (interrupt, 1, 12)
[  952.336497] i8042: [237692] 00 <- i8042 (interrupt, 1, 12)
[  952.340656] i8042: [237693] cf <- i8042 (interrupt, 1, 12)
[  952.341682] i8042: [237694] 7c <- i8042 (interrupt, 1, 12)
[  952.342707] i8042: [237694] 7c <- i8042 (interrupt, 1, 12)
[  952.343734] i8042: [237694] 7f <- i8042 (interrupt, 1, 12)
[  952.344722] i8042: [237694] 16 <- i8042 (interrupt, 1, 12)
[  952.345746] i8042: [237695] ff <- i8042 (interrupt, 1, 12)
[  952.345750] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.350790] i8042: [237696] 8f <- i8042 (interrupt, 1, 12)
[  952.351697] i8042: [237696] 00 <- i8042 (interrupt, 1, 12)
[  952.352725] i8042: [237696] 00 <- i8042 (interrupt, 1, 12)
[  952.353753] i8042: [237697] 08 <- i8042 (interrupt, 1, 12)
[  952.354778] i8042: [237697] 40 <- i8042 (interrupt, 1, 12)
[  952.355803] i8042: [237697] 00 <- i8042 (interrupt, 1, 12)
[  952.360906] i8042: [237698] cf <- i8042 (interrupt, 1, 12)
[  952.361901] i8042: [237699] 00 <- i8042 (interrupt, 1, 12)
[  952.362905] i8042: [237699] 00 <- i8042 (interrupt, 1, 12)
[  952.363960] i8042: [237699] 08 <- i8042 (interrupt, 1, 12)
[  952.365014] i8042: [237699] 00 <- i8042 (interrupt, 1, 12)
[  952.366041] i8042: [237700] 00 <- i8042 (interrupt, 1, 12)
[  952.371163] i8042: [237701] cf <- i8042 (interrupt, 1, 12)
[  952.372190] i8042: [237701] 00 <- i8042 (interrupt, 1, 12)
[  952.373214] i8042: [237701] 00 <- i8042 (interrupt, 1, 12)
[  952.374243] i8042: [237702] 08 <- i8042 (interrupt, 1, 12)
[  952.375550] i8042: [237702] 00 <- i8042 (interrupt, 1, 12)
[  952.376260] i8042: [237702] 00 <- i8042 (interrupt, 1, 12)
[  952.381318] i8042: [237704] cf <- i8042 (interrupt, 1, 12)
[  952.382341] i8042: [237704] 00 <- i8042 (interrupt, 1, 12)
[  952.383367] i8042: [237704] 00 <- i8042 (interrupt, 1, 12)
[  952.384393] i8042: [237704] 08 <- i8042 (interrupt, 1, 12)
[  952.385422] i8042: [237705] 00 <- i8042 (interrupt, 1, 12)
[  952.386445] i8042: [237705] 00 <- i8042 (interrupt, 1, 12)
[  952.391403] i8042: [237706] 8f <- i8042 (interrupt, 1, 12)
[  952.392429] i8042: [237706] 00 <- i8042 (interrupt, 1, 12)
[  952.393457] i8042: [237707] 00 <- i8042 (interrupt, 1, 12)
[  952.394481] i8042: [237707] 08 <- i8042 (interrupt, 1, 12)
[  952.395507] i8042: [237707] 40 <- i8042 (interrupt, 1, 12)
[  952.396534] i8042: [237707] 00 <- i8042 (interrupt, 1, 12)
[  952.401582] i8042: [237709] cf <- i8042 (interrupt, 1, 12)
[  952.402636] i8042: [237709] 00 <- i8042 (interrupt, 1, 12)
[  952.403662] i8042: [237709] 00 <- i8042 (interrupt, 1, 12)
[  952.404688] i8042: [237709] 08 <- i8042 (interrupt, 1, 12)
[  952.405716] i8042: [237710] 00 <- i8042 (interrupt, 1, 12)
[  952.406742] i8042: [237710] 00 <- i8042 (interrupt, 1, 12)
[  952.411835] i8042: [237711] 8f <- i8042 (interrupt, 1, 12)
[  952.412860] i8042: [237711] 00 <- i8042 (interrupt, 1, 12)
[  952.413887] i8042: [237712] 00 <- i8042 (interrupt, 1, 12)
[  952.414862] i8042: [237712] 08 <- i8042 (interrupt, 1, 12)
[  952.415942] i8042: [237712] 40 <- i8042 (interrupt, 1, 12)
[  952.416967] i8042: [237712] 00 <- i8042 (interrupt, 1, 12)
[  952.421940] i8042: [237714] cf <- i8042 (interrupt, 1, 12)
[  952.422966] i8042: [237714] 7d <- i8042 (interrupt, 1, 12)
[  952.423993] i8042: [237714] 7c <- i8042 (interrupt, 1, 12)
[  952.424996] i8042: [237714] 7f <- i8042 (interrupt, 1, 12)
[  952.426005] i8042: [237715] 16 <- i8042 (interrupt, 1, 12)
[  952.427030] i8042: [237715] ff <- i8042 (interrupt, 1, 12)
[  952.427034] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.432132] i8042: [237716] 8f <- i8042 (interrupt, 1, 12)
[  952.433160] i8042: [237716] 00 <- i8042 (interrupt, 1, 12)
[  952.434189] i8042: [237717] 00 <- i8042 (interrupt, 1, 12)
[  952.435213] i8042: [237717] 08 <- i8042 (interrupt, 1, 12)
[  952.436186] i8042: [237717] 40 <- i8042 (interrupt, 1, 12)
[  952.437209] i8042: [237717] 00 <- i8042 (interrupt, 1, 12)
[  952.442361] i8042: [237719] cf <- i8042 (interrupt, 1, 12)
[  952.443389] i8042: [237719] 7f <- i8042 (interrupt, 1, 12)
[  952.444413] i8042: [237719] 7c <- i8042 (interrupt, 1, 12)
[  952.445440] i8042: [237720] 7f <- i8042 (interrupt, 1, 12)
[  952.446464] i8042: [237720] 1e <- i8042 (interrupt, 1, 12)
[  952.447500] i8042: [237720] 66 <- i8042 (interrupt, 1, 12)
[  952.452465] i8042: [237721] 8f <- i8042 (interrupt, 1, 12)
[  952.453441] i8042: [237722] 00 <- i8042 (interrupt, 1, 12)
[  952.454517] i8042: [237722] 00 <- i8042 (interrupt, 1, 12)
[  952.455544] i8042: [237722] 08 <- i8042 (interrupt, 1, 12)
[  952.456570] i8042: [237722] 40 <- i8042 (interrupt, 1, 12)
[  952.457598] i8042: [237723] 00 <- i8042 (interrupt, 1, 12)
[  952.462692] i8042: [237724] cf <- i8042 (interrupt, 1, 12)
[  952.463718] i8042: [237724] 7f <- i8042 (interrupt, 1, 12)
[  952.464743] i8042: [237724] 7c <- i8042 (interrupt, 1, 12)
[  952.465771] i8042: [237725] 7f <- i8042 (interrupt, 1, 12)
[  952.466796] i8042: [237725] 1e <- i8042 (interrupt, 1, 12)
[  952.467822] i8042: [237725] 65 <- i8042 (interrupt, 1, 12)
[  952.472741] i8042: [237726] cf <- i8042 (interrupt, 1, 12)
[  952.473824] i8042: [237727] 00 <- i8042 (interrupt, 1, 12)
[  952.474849] i8042: [237727] 00 <- i8042 (interrupt, 1, 12)
[  952.475874] i8042: [237727] 08 <- i8042 (interrupt, 1, 12)
[  952.476902] i8042: [237727] 00 <- i8042 (interrupt, 1, 12)
[  952.477931] i8042: [237728] 00 <- i8042 (interrupt, 1, 12)
[  952.483023] i8042: [237729] 8f <- i8042 (interrupt, 1, 12)
[  952.484049] i8042: [237729] 00 <- i8042 (interrupt, 1, 12)
[  952.485075] i8042: [237729] 00 <- i8042 (interrupt, 1, 12)
[  952.486104] i8042: [237730] 08 <- i8042 (interrupt, 1, 12)
[  952.487129] i8042: [237730] 40 <- i8042 (interrupt, 1, 12)
[  952.488155] i8042: [237730] 00 <- i8042 (interrupt, 1, 12)
[  952.493229] i8042: [237731] cf <- i8042 (interrupt, 1, 12)
[  952.494257] i8042: [237732] 7f <- i8042 (interrupt, 1, 12)
[  952.495285] i8042: [237732] 7c <- i8042 (interrupt, 1, 12)
[  952.496310] i8042: [237732] 7f <- i8042 (interrupt, 1, 12)
[  952.497336] i8042: [237732] 1e <- i8042 (interrupt, 1, 12)
[  952.498710] i8042: [237733] 65 <- i8042 (interrupt, 1, 12)
[  952.503435] i8042: [237734] 8f <- i8042 (interrupt, 1, 12)
[  952.504462] i8042: [237734] 00 <- i8042 (interrupt, 1, 12)
[  952.505499] i8042: [237735] 00 <- i8042 (interrupt, 1, 12)
[  952.506442] i8042: [237735] 08 <- i8042 (interrupt, 1, 12)
[  952.507524] i8042: [237735] 40 <- i8042 (interrupt, 1, 12)
[  952.508635] i8042: [237735] 00 <- i8042 (interrupt, 1, 12)
[  952.513558] i8042: [237737] cf <- i8042 (interrupt, 1, 12)
[  952.514583] i8042: [237737] 00 <- i8042 (interrupt, 1, 12)
[  952.515611] i8042: [237737] 00 <- i8042 (interrupt, 1, 12)
[  952.516637] i8042: [237737] 08 <- i8042 (interrupt, 1, 12)
[  952.517671] i8042: [237738] 00 <- i8042 (interrupt, 1, 12)
[  952.518757] i8042: [237738] 00 <- i8042 (interrupt, 1, 12)
[  952.523680] i8042: [237739] cf <- i8042 (interrupt, 1, 12)
[  952.524707] i8042: [237739] 00 <- i8042 (interrupt, 1, 12)
[  952.525735] i8042: [237740] 00 <- i8042 (interrupt, 1, 12)
[  952.526760] i8042: [237740] 08 <- i8042 (interrupt, 1, 12)
[  952.527870] i8042: [237740] 00 <- i8042 (interrupt, 1, 12)
[  952.532309] i8042: [237741] 00 <- i8042 (interrupt, 1, 12)
[  952.533925] i8042: [237742] cf <- i8042 (interrupt, 1, 12)
[  952.534949] i8042: [237742] 00 <- i8042 (interrupt, 1, 12)
[  952.535978] i8042: [237742] 00 <- i8042 (interrupt, 1, 12)
[  952.537005] i8042: [237742] 08 <- i8042 (interrupt, 1, 12)
[  952.538112] i8042: [237743] 00 <- i8042 (interrupt, 1, 12)
[  952.539022] i8042: [237743] 00 <- i8042 (interrupt, 1, 12)
[  952.544005] i8042: [237744] 8f <- i8042 (interrupt, 1, 12)
[  952.545030] i8042: [237744] 00 <- i8042 (interrupt, 1, 12)
[  952.546073] i8042: [237745] 00 <- i8042 (interrupt, 1, 12)
[  952.547143] i8042: [237745] 08 <- i8042 (interrupt, 1, 12)
[  952.548250] i8042: [237745] 40 <- i8042 (interrupt, 1, 12)
[  952.549135] i8042: [237745] 00 <- i8042 (interrupt, 1, 12)
[  952.554201] i8042: [237747] cf <- i8042 (interrupt, 1, 12)
[  952.555226] i8042: [237747] 7f <- i8042 (interrupt, 1, 12)
[  952.556253] i8042: [237747] 7c <- i8042 (interrupt, 1, 12)
[  952.557280] i8042: [237747] 7f <- i8042 (interrupt, 1, 12)
[  952.558388] i8042: [237748] 1e <- i8042 (interrupt, 1, 12)
[  952.559296] i8042: [237748] ff <- i8042 (interrupt, 1, 12)
[  952.559302] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.564455] i8042: [237749] cf <- i8042 (interrupt, 1, 12)
[  952.565444] i8042: [237750] 00 <- i8042 (interrupt, 1, 12)
[  952.566468] i8042: [237750] 00 <- i8042 (interrupt, 1, 12)
[  952.567495] i8042: [237750] 08 <- i8042 (interrupt, 1, 12)
[  952.568645] i8042: [237750] 00 <- i8042 (interrupt, 1, 12)
[  952.569554] i8042: [237751] 00 <- i8042 (interrupt, 1, 12)
[  952.574597] i8042: [237752] cf <- i8042 (interrupt, 1, 12)
[  952.575620] i8042: [237752] 00 <- i8042 (interrupt, 1, 12)
[  952.576606] i8042: [237752] 00 <- i8042 (interrupt, 1, 12)
[  952.577711] i8042: [237753] 08 <- i8042 (interrupt, 1, 12)
[  952.578620] i8042: [237753] 00 <- i8042 (interrupt, 1, 12)
[  952.579648] i8042: [237753] 00 <- i8042 (interrupt, 1, 12)
[  952.584731] i8042: [237754] cf <- i8042 (interrupt, 1, 12)
[  952.585760] i8042: [237755] 00 <- i8042 (interrupt, 1, 12)
[  952.586786] i8042: [237755] 00 <- i8042 (interrupt, 1, 12)
[  952.587891] i8042: [237755] 08 <- i8042 (interrupt, 1, 12)
[  952.588801] i8042: [237755] 00 <- i8042 (interrupt, 1, 12)
[  952.589828] i8042: [237756] 00 <- i8042 (interrupt, 1, 12)
[  952.594987] i8042: [237757] cf <- i8042 (interrupt, 1, 12)
[  952.596015] i8042: [237757] 00 <- i8042 (interrupt, 1, 12)
[  952.597040] i8042: [237757] 00 <- i8042 (interrupt, 1, 12)
[  952.598151] i8042: [237758] 08 <- i8042 (interrupt, 1, 12)
[  952.599058] i8042: [237758] 00 <- i8042 (interrupt, 1, 12)
[  952.600085] i8042: [237758] 00 <- i8042 (interrupt, 1, 12)
[  952.605126] i8042: [237759] cf <- i8042 (interrupt, 1, 12)
[  952.606154] i8042: [237760] 00 <- i8042 (interrupt, 1, 12)
[  952.607182] i8042: [237760] 00 <- i8042 (interrupt, 1, 12)
[  952.608289] i8042: [237760] 08 <- i8042 (interrupt, 1, 12)
[  952.609141] i8042: [237760] 00 <- i8042 (interrupt, 1, 12)
[  952.610192] i8042: [237761] 00 <- i8042 (interrupt, 1, 12)
[  952.615233] i8042: [237762] 8f <- i8042 (interrupt, 1, 12)
[  952.616260] i8042: [237762] 00 <- i8042 (interrupt, 1, 12)
[  952.617286] i8042: [237762] 00 <- i8042 (interrupt, 1, 12)
[  952.618395] i8042: [237763] 08 <- i8042 (interrupt, 1, 12)
[  952.619302] i8042: [237763] 40 <- i8042 (interrupt, 1, 12)
[  952.620654] i8042: [237763] 00 <- i8042 (interrupt, 1, 12)
[  952.625463] i8042: [237765] cf <- i8042 (interrupt, 1, 12)
[  952.627681] i8042: [237765] 7f <- i8042 (interrupt, 1, 12)
[  952.628708] i8042: [237765] 7c <- i8042 (interrupt, 1, 12)
[  952.629732] i8042: [237766] 7f <- i8042 (interrupt, 1, 12)
[  952.630757] i8042: [237766] 1e <- i8042 (interrupt, 1, 12)
[  952.631784] i8042: [237766] ff <- i8042 (interrupt, 1, 12)
[  952.631791] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.635642] i8042: [237767] 8f <- i8042 (interrupt, 1, 12)
[  952.636669] i8042: [237767] 00 <- i8042 (interrupt, 1, 12)
[  952.637775] i8042: [237768] 00 <- i8042 (interrupt, 1, 12)
[  952.638681] i8042: [237768] 08 <- i8042 (interrupt, 1, 12)
[  952.639707] i8042: [237768] 40 <- i8042 (interrupt, 1, 12)
[  952.640734] i8042: [237768] 00 <- i8042 (interrupt, 1, 12)
[  952.645773] i8042: [237770] cf <- i8042 (interrupt, 1, 12)
[  952.646799] i8042: [237770] 7d <- i8042 (interrupt, 1, 12)
[  952.647902] i8042: [237770] 7c <- i8042 (interrupt, 1, 12)
[  952.648811] i8042: [237770] 7f <- i8042 (interrupt, 1, 12)
[  952.649841] i8042: [237771] 1e <- i8042 (interrupt, 1, 12)
[  952.650863] i8042: [237771] ff <- i8042 (interrupt, 1, 12)
[  952.650869] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.656021] i8042: [237772] cf <- i8042 (interrupt, 1, 12)
[  952.657049] i8042: [237772] 00 <- i8042 (interrupt, 1, 12)
[  952.658156] i8042: [237773] 00 <- i8042 (interrupt, 1, 12)
[  952.658986] i8042: [237773] 08 <- i8042 (interrupt, 1, 12)
[  952.660013] i8042: [237773] 00 <- i8042 (interrupt, 1, 12)
[  952.661095] i8042: [237773] 00 <- i8042 (interrupt, 1, 12)
[  952.666135] i8042: [237775] cf <- i8042 (interrupt, 1, 12)
[  952.667161] i8042: [237775] 00 <- i8042 (interrupt, 1, 12)
[  952.668265] i8042: [237775] 00 <- i8042 (interrupt, 1, 12)
[  952.669173] i8042: [237775] 08 <- i8042 (interrupt, 1, 12)
[  952.670201] i8042: [237776] 00 <- i8042 (interrupt, 1, 12)
[  952.671226] i8042: [237776] 00 <- i8042 (interrupt, 1, 12)
[  952.676382] i8042: [237777] 8f <- i8042 (interrupt, 1, 12)
[  952.677489] i8042: [237778] 00 <- i8042 (interrupt, 1, 12)
[  952.678394] i8042: [237778] 00 <- i8042 (interrupt, 1, 12)
[  952.679419] i8042: [237778] 08 <- i8042 (interrupt, 1, 12)
[  952.680447] i8042: [237778] 40 <- i8042 (interrupt, 1, 12)
[  952.681473] i8042: [237778] 00 <- i8042 (interrupt, 1, 12)
[  952.686514] i8042: [237780] cf <- i8042 (interrupt, 1, 12)
[  952.687616] i8042: [237780] 7c <- i8042 (interrupt, 1, 12)
[  952.688469] i8042: [237780] 7c <- i8042 (interrupt, 1, 12)
[  952.689531] i8042: [237781] 7f <- i8042 (interrupt, 1, 12)
[  952.690576] i8042: [237781] 16 <- i8042 (interrupt, 1, 12)
[  952.691601] i8042: [237781] ff <- i8042 (interrupt, 1, 12)
[  952.691607] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.696583] i8042: [237782] 8f <- i8042 (interrupt, 1, 12)
[  952.697718] i8042: [237783] 00 <- i8042 (interrupt, 1, 12)
[  952.698653] i8042: [237783] 00 <- i8042 (interrupt, 1, 12)
[  952.699679] i8042: [237783] 08 <- i8042 (interrupt, 1, 12)
[  952.700704] i8042: [237783] 40 <- i8042 (interrupt, 1, 12)
[  952.701732] i8042: [237784] 00 <- i8042 (interrupt, 1, 12)
[  952.706862] i8042: [237785] cf <- i8042 (interrupt, 1, 12)
[  952.707956] i8042: [237785] 7c <- i8042 (interrupt, 1, 12)
[  952.708874] i8042: [237785] 7c <- i8042 (interrupt, 1, 12)
[  952.709901] i8042: [237786] 7f <- i8042 (interrupt, 1, 12)
[  952.710931] i8042: [237786] 16 <- i8042 (interrupt, 1, 12)
[  952.711938] i8042: [237786] ff <- i8042 (interrupt, 1, 12)
[  952.711943] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.717020] i8042: [237787] cf <- i8042 (interrupt, 1, 12)
[  952.718103] i8042: [237788] 00 <- i8042 (interrupt, 1, 12)
[  952.719011] i8042: [237788] 00 <- i8042 (interrupt, 1, 12)
[  952.720037] i8042: [237788] 08 <- i8042 (interrupt, 1, 12)
[  952.721063] i8042: [237788] 00 <- i8042 (interrupt, 1, 12)
[  952.722115] i8042: [237789] 00 <- i8042 (interrupt, 1, 12)
[  952.727323] i8042: [237790] 8f <- i8042 (interrupt, 1, 12)
[  952.728231] i8042: [237790] 00 <- i8042 (interrupt, 1, 12)
[  952.729200] i8042: [237790] 00 <- i8042 (interrupt, 1, 12)
[  952.730224] i8042: [237791] 08 <- i8042 (interrupt, 1, 12)
[  952.731308] i8042: [237791] 40 <- i8042 (interrupt, 1, 12)
[  952.732335] i8042: [237791] 00 <- i8042 (interrupt, 1, 12)
[  952.737436] i8042: [237792] cf <- i8042 (interrupt, 1, 12)
[  952.738463] i8042: [237793] 30 <- i8042 (interrupt, 1, 12)
[  952.739489] i8042: [237793] 7c <- i8042 (interrupt, 1, 12)
[  952.740515] i8042: [237793] 7f <- i8042 (interrupt, 1, 12)
[  952.741544] i8042: [237794] 16 <- i8042 (interrupt, 1, 12)
[  952.745626] i8042: [237795] ff <- i8042 (interrupt, 1, 12)
[  952.745632] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.747569] i8042: [237795] 8f <- i8042 (interrupt, 1, 12)
[  952.748597] i8042: [237795] 00 <- i8042 (interrupt, 1, 12)
[  952.749625] i8042: [237796] 00 <- i8042 (interrupt, 1, 12)
[  952.750650] i8042: [237796] 08 <- i8042 (interrupt, 1, 12)
[  952.751680] i8042: [237796] 40 <- i8042 (interrupt, 1, 12)
[  952.752708] i8042: [237796] 00 <- i8042 (interrupt, 1, 12)
[  952.757785] i8042: [237798] cf <- i8042 (interrupt, 1, 12)
[  952.758811] i8042: [237798] 00 <- i8042 (interrupt, 1, 12)
[  952.759837] i8042: [237798] 70 <- i8042 (interrupt, 1, 12)
[  952.760864] i8042: [237798] 7f <- i8042 (interrupt, 1, 12)
[  952.761873] i8042: [237799] 02 <- i8042 (interrupt, 1, 12)
[  952.762862] i8042: [237799] ff <- i8042 (interrupt, 1, 12)
[  952.762868] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.767878] i8042: [237800] 8f <- i8042 (interrupt, 1, 12)
[  952.768905] i8042: [237800] 00 <- i8042 (interrupt, 1, 12)
[  952.769931] i8042: [237801] 00 <- i8042 (interrupt, 1, 12)
[  952.770958] i8042: [237801] 08 <- i8042 (interrupt, 1, 12)
[  952.771985] i8042: [237801] 40 <- i8042 (interrupt, 1, 12)
[  952.772974] i8042: [237801] 00 <- i8042 (interrupt, 1, 12)
[  952.778109] i8042: [237803] cf <- i8042 (interrupt, 1, 12)
[  952.779134] i8042: [237803] 00 <- i8042 (interrupt, 1, 12)
[  952.780161] i8042: [237803] 00 <- i8042 (interrupt, 1, 12)
[  952.781189] i8042: [237803] 08 <- i8042 (interrupt, 1, 12)
[  952.782214] i8042: [237804] 00 <- i8042 (interrupt, 1, 12)
[  952.783258] i8042: [237804] 00 <- i8042 (interrupt, 1, 12)
[  952.788306] i8042: [237805] 8f <- i8042 (interrupt, 1, 12)
[  952.789330] i8042: [237805] 00 <- i8042 (interrupt, 1, 12)
[  952.790360] i8042: [237806] 00 <- i8042 (interrupt, 1, 12)
[  952.791386] i8042: [237806] 08 <- i8042 (interrupt, 1, 12)
[  952.792412] i8042: [237806] 40 <- i8042 (interrupt, 1, 12)
[  952.793438] i8042: [237806] 00 <- i8042 (interrupt, 1, 12)
[  952.798358] i8042: [237808] cf <- i8042 (interrupt, 1, 12)
[  952.799413] i8042: [237808] 00 <- i8042 (interrupt, 1, 12)
[  952.800468] i8042: [237808] 70 <- i8042 (interrupt, 1, 12)
[  952.801493] i8042: [237808] 7f <- i8042 (interrupt, 1, 12)
[  952.802523] i8042: [237809] 02 <- i8042 (interrupt, 1, 12)
[  952.803548] i8042: [237809] ff <- i8042 (interrupt, 1, 12)
[  952.803554] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.808642] i8042: [237810] 8f <- i8042 (interrupt, 1, 12)
[  952.809668] i8042: [237811] 00 <- i8042 (interrupt, 1, 12)
[  952.810694] i8042: [237811] 00 <- i8042 (interrupt, 1, 12)
[  952.811720] i8042: [237811] 08 <- i8042 (interrupt, 1, 12)
[  952.812749] i8042: [237811] 40 <- i8042 (interrupt, 1, 12)
[  952.813775] i8042: [237812] 00 <- i8042 (interrupt, 1, 12)
[  952.818750] i8042: [237813] cf <- i8042 (interrupt, 1, 12)
[  952.819778] i8042: [237813] 00 <- i8042 (interrupt, 1, 12)
[  952.820807] i8042: [237813] 00 <- i8042 (interrupt, 1, 12)
[  952.822872] i8042: [237814] 08 <- i8042 (interrupt, 1, 12)
[  952.823046] i8042: [237814] 00 <- i8042 (interrupt, 1, 12)
[  952.824119] i8042: [237814] 00 <- i8042 (interrupt, 1, 12)
[  952.828918] i8042: [237815] 8f <- i8042 (interrupt, 1, 12)
[  952.829974] i8042: [237816] 00 <- i8042 (interrupt, 1, 12)
[  952.830999] i8042: [237816] 00 <- i8042 (interrupt, 1, 12)
[  952.832025] i8042: [237816] 08 <- i8042 (interrupt, 1, 12)
[  952.832998] i8042: [237816] 40 <- i8042 (interrupt, 1, 12)
[  952.834023] i8042: [237817] 00 <- i8042 (interrupt, 1, 12)
[  952.839174] i8042: [237818] cf <- i8042 (interrupt, 1, 12)
[  952.840201] i8042: [237818] 00 <- i8042 (interrupt, 1, 12)
[  952.841228] i8042: [237818] 70 <- i8042 (interrupt, 1, 12)
[  952.842254] i8042: [237819] 7f <- i8042 (interrupt, 1, 12)
[  952.843283] i8042: [237819] 00 <- i8042 (interrupt, 1, 12)
[  952.844310] i8042: [237819] ff <- i8042 (interrupt, 1, 12)
[  952.844316] psmouse serio1: alps: v3 discard packet[5] = ff
[  952.849270] i8042: [237820] cf <- i8042 (interrupt, 1, 12)
[  952.850297] i8042: [237821] 00 <- i8042 (interrupt, 1, 12)
[  952.851324] i8042: [237821] 00 <- i8042 (interrupt, 1, 12)
[  952.852350] i8042: [237821] 08 <- i8042 (interrupt, 1, 12)
[  952.853377] i8042: [237821] 00 <- i8042 (interrupt, 1, 12)
[  952.854404] i8042: [237822] 00 <- i8042 (interrupt, 1, 12)
[  952.859484] i8042: [237823] cf <- i8042 (interrupt, 1, 12)
[  952.860508] i8042: [237823] 00 <- i8042 (interrupt, 1, 12)
[  952.861536] i8042: [237823] 00 <- i8042 (interrupt, 1, 12)
[  952.862561] i8042: [237824] 08 <- i8042 (interrupt, 1, 12)
[  952.863591] i8042: [237824] 00 <- i8042 (interrupt, 1, 12)
[  952.864852] i8042: [237824] 00 <- i8042 (interrupt, 1, 12)
[  952.869641] i8042: [237826] cf <- i8042 (interrupt, 1, 12)
[  952.870711] i8042: [237826] 00 <- i8042 (interrupt, 1, 12)
[  952.871738] i8042: [237826] 00 <- i8042 (interrupt, 1, 12)
[  952.872764] i8042: [237826] 08 <- i8042 (interrupt, 1, 12)
[  952.873765] i8042: [237827] 00 <- i8042 (interrupt, 1, 12)
[  952.874818] i8042: [237827] 00 <- i8042 (interrupt, 1, 12)
[  952.879794] i8042: [237828] cf <- i8042 (interrupt, 1, 12)
[  952.880821] i8042: [237828] 00 <- i8042 (interrupt, 1, 12)
[  952.881847] i8042: [237829] 00 <- i8042 (interrupt, 1, 12)
[  952.882873] i8042: [237829] 08 <- i8042 (interrupt, 1, 12)
[  952.883900] i8042: [237829] 00 <- i8042 (interrupt, 1, 12)
[  952.884927] i8042: [237829] 00 <- i8042 (interrupt, 1, 12)
[  952.890023] i8042: [237831] cf <- i8042 (interrupt, 1, 12)
[  952.891048] i8042: [237831] 00 <- i8042 (interrupt, 1, 12)
[  952.892075] i8042: [237831] 00 <- i8042 (interrupt, 1, 12)
[  952.893103] i8042: [237831] 08 <- i8042 (interrupt, 1, 12)
[  952.894131] i8042: [237832] 00 <- i8042 (interrupt, 1, 12)
[  952.895235] i8042: [237832] 00 <- i8042 (interrupt, 1, 12)
[  952.900102] i8042: [237833] cf <- i8042 (interrupt, 1, 12)
[  952.901125] i8042: [237833] 00 <- i8042 (interrupt, 1, 12)
[  952.902210] i8042: [237834] 00 <- i8042 (interrupt, 1, 12)
[  952.903237] i8042: [237834] 08 <- i8042 (interrupt, 1, 12)
[  952.904264] i8042: [237834] 00 <- i8042 (interrupt, 1, 12)
[  952.905370] i8042: [237834] 00 <- i8042 (interrupt, 1, 12)
[  952.910391] i8042: [237836] cf <- i8042 (interrupt, 1, 12)
[  952.911414] i8042: [237836] 00 <- i8042 (interrupt, 1, 12)
[  952.912443] i8042: [237836] 00 <- i8042 (interrupt, 1, 12)
[  952.913469] i8042: [237836] 08 <- i8042 (interrupt, 1, 12)
[  952.914496] i8042: [237837] 00 <- i8042 (interrupt, 1, 12)
[  952.915600] i8042: [237837] 00 <- i8042 (interrupt, 1, 12)
[  952.920725] i8042: [237838] cf <- i8042 (interrupt, 1, 12)
[  952.921707] i8042: [237839] 00 <- i8042 (interrupt, 1, 12)
[  952.922775] i8042: [237839] 00 <- i8042 (interrupt, 1, 12)
[  952.923805] i8042: [237839] 08 <- i8042 (interrupt, 1, 12)
[  952.924833] i8042: [237839] 00 <- i8042 (interrupt, 1, 12)
[  952.925937] i8042: [237840] 00 <- i8042 (interrupt, 1, 12)
[  952.930739] i8042: [237841] cf <- i8042 (interrupt, 1, 12)
[  952.931767] i8042: [237841] 00 <- i8042 (interrupt, 1, 12)
[  952.932793] i8042: [237841] 00 <- i8042 (interrupt, 1, 12)
[  952.933764] i8042: [237842] 08 <- i8042 (interrupt, 1, 12)
[  952.934789] i8042: [237842] 00 <- i8042 (interrupt, 1, 12)
[  952.935950] i8042: [237842] 00 <- i8042 (interrupt, 1, 12)
[  952.940871] i8042: [237843] cf <- i8042 (interrupt, 1, 12)
[  952.941897] i8042: [237844] 00 <- i8042 (interrupt, 1, 12)
[  952.942922] i8042: [237844] 00 <- i8042 (interrupt, 1, 12)
[  952.943949] i8042: [237844] 08 <- i8042 (interrupt, 1, 12)
[  952.945033] i8042: [237844] 00 <- i8042 (interrupt, 1, 12)
[  952.945949] i8042: [237845] 00 <- i8042 (interrupt, 1, 12)
[  952.951006] i8042: [237846] cf <- i8042 (interrupt, 1, 12)
[  952.952031] i8042: [237846] 00 <- i8042 (interrupt, 1, 12)
[  952.953058] i8042: [237846] 00 <- i8042 (interrupt, 1, 12)
[  952.954085] i8042: [237847] 08 <- i8042 (interrupt, 1, 12)
[  952.955191] i8042: [237847] 00 <- i8042 (interrupt, 1, 12)
[  952.956099] i8042: [237847] 00 <- i8042 (interrupt, 1, 12)
[  952.961258] i8042: [237848] cf <- i8042 (interrupt, 1, 12)
[  952.962282] i8042: [237849] 00 <- i8042 (interrupt, 1, 12)
[  952.963310] i8042: [237849] 00 <- i8042 (interrupt, 1, 12)
[  952.964336] i8042: [237849] 08 <- i8042 (interrupt, 1, 12)
[  952.965414] i8042: [237849] 00 <- i8042 (interrupt, 1, 12)
[  952.966296] i8042: [237850] 00 <- i8042 (interrupt, 1, 12)
[  952.971391] i8042: [237851] cf <- i8042 (interrupt, 1, 12)
[  952.972417] i8042: [237851] 00 <- i8042 (interrupt, 1, 12)
[  952.973443] i8042: [237851] 00 <- i8042 (interrupt, 1, 12)
[  952.974470] i8042: [237852] 08 <- i8042 (interrupt, 1, 12)
[  952.975575] i8042: [237852] 00 <- i8042 (interrupt, 1, 12)
[  952.976484] i8042: [237852] 00 <- i8042 (interrupt, 1, 12)
[  952.981524] i8042: [237853] cf <- i8042 (interrupt, 1, 12)
[  952.982550] i8042: [237854] 00 <- i8042 (interrupt, 1, 12)
[  952.983575] i8042: [237854] 00 <- i8042 (interrupt, 1, 12)
[  952.984600] i8042: [237854] 08 <- i8042 (interrupt, 1, 12)
[  952.985707] i8042: [237855] 00 <- i8042 (interrupt, 1, 12)
[  952.986904] i8042: [237855] 00 <- i8042 (interrupt, 1, 12)
[  952.991746] i8042: [237856] cf <- i8042 (interrupt, 1, 12)
[  952.992771] i8042: [237856] 00 <- i8042 (interrupt, 1, 12)
[  952.993799] i8042: [237857] 00 <- i8042 (interrupt, 1, 12)
[  952.994903] i8042: [237857] 08 <- i8042 (interrupt, 1, 12)
[  952.995812] i8042: [237857] 00 <- i8042 (interrupt, 1, 12)
[  952.996840] i8042: [237857] 00 <- i8042 (interrupt, 1, 12)
[  953.001822] i8042: [237859] cf <- i8042 (interrupt, 1, 12)
[  953.002846] i8042: [237859] 00 <- i8042 (interrupt, 1, 12)
[  953.003932] i8042: [237859] 00 <- i8042 (interrupt, 1, 12)
[  953.005015] i8042: [237859] 08 <- i8042 (interrupt, 1, 12)
[  953.005920] i8042: [237860] 00 <- i8042 (interrupt, 1, 12)
[  953.006973] i8042: [237860] 00 <- i8042 (interrupt, 1, 12)
[  953.012130] i8042: [237861] cf <- i8042 (interrupt, 1, 12)
[  953.013158] i8042: [237861] 00 <- i8042 (interrupt, 1, 12)
[  953.014187] i8042: [237862] 00 <- i8042 (interrupt, 1, 12)
[  953.015292] i8042: [237862] 08 <- i8042 (interrupt, 1, 12)
[  953.016203] i8042: [237862] 00 <- i8042 (interrupt, 1, 12)
[  953.018273] i8042: [237863] 00 <- i8042 (interrupt, 1, 12)
[  953.022250] i8042: [237864] cf <- i8042 (interrupt, 1, 12)
[  953.023275] i8042: [237864] 00 <- i8042 (interrupt, 1, 12)
[  953.024301] i8042: [237864] 00 <- i8042 (interrupt, 1, 12)
[  953.025407] i8042: [237864] 08 <- i8042 (interrupt, 1, 12)
[  953.026319] i8042: [237865] 00 <- i8042 (interrupt, 1, 12)
[  953.027343] i8042: [237865] 00 <- i8042 (interrupt, 1, 12)
[  953.032384] i8042: [237866] 8f <- i8042 (interrupt, 1, 12)
[  953.033410] i8042: [237866] 00 <- i8042 (interrupt, 1, 12)
[  953.034437] i8042: [237867] 00 <- i8042 (interrupt, 1, 12)
[  953.035542] i8042: [237867] 08 <- i8042 (interrupt, 1, 12)
[  953.036452] i8042: [237867] 00 <- i8042 (interrupt, 1, 12)
[  953.037479] i8042: [237867] 00 <- i8042 (interrupt, 1, 12)
[  953.042635] i8042: [237869] 8f <- i8042 (interrupt, 1, 12)
[  953.043660] i8042: [237869] 00 <- i8042 (interrupt, 1, 12)
[  953.044767] i8042: [237869] 00 <- i8042 (interrupt, 1, 12)
[  953.045677] i8042: [237869] 08 <- i8042 (interrupt, 1, 12)
[  953.046702] i8042: [237870] 00 <- i8042 (interrupt, 1, 12)
[  953.047729] i8042: [237870] 00 <- i8042 (interrupt, 1, 12)
[  953.052767] i8042: [237871] 8f <- i8042 (interrupt, 1, 12)
[  953.053793] i8042: [237872] 00 <- i8042 (interrupt, 1, 12)
[  953.054902] i8042: [237872] 00 <- i8042 (interrupt, 1, 12)
[  953.055810] i8042: [237872] 08 <- i8042 (interrupt, 1, 12)
[  953.056837] i8042: [237872] 00 <- i8042 (interrupt, 1, 12)
[  953.057864] i8042: [237873] 00 <- i8042 (interrupt, 1, 12)
[  953.062903] i8042: [237874] 8f <- i8042 (interrupt, 1, 12)
[  953.063929] i8042: [237874] 00 <- i8042 (interrupt, 1, 12)
[  953.065035] i8042: [237874] 00 <- i8042 (interrupt, 1, 12)
[  953.065946] i8042: [237875] 08 <- i8042 (interrupt, 1, 12)
[  953.066971] i8042: [237875] 00 <- i8042 (interrupt, 1, 12)
[  953.067998] i8042: [237875] 00 <- i8042 (interrupt, 1, 12)
[  953.073154] i8042: [237876] 8f <- i8042 (interrupt, 1, 12)
[  953.074207] i8042: [237877] 00 <- i8042 (interrupt, 1, 12)
[  953.075111] i8042: [237877] 00 <- i8042 (interrupt, 1, 12)
[  953.076139] i8042: [237877] 08 <- i8042 (interrupt, 1, 12)
[  953.077203] i8042: [237877] 00 <- i8042 (interrupt, 1, 12)
[  953.078250] i8042: [237878] 00 <- i8042 (interrupt, 1, 12)
[  953.083291] i8042: [237879] 8f <- i8042 (interrupt, 1, 12)
[  953.084377] i8042: [237879] 00 <- i8042 (interrupt, 1, 12)
[  953.085287] i8042: [237879] 00 <- i8042 (interrupt, 1, 12)
[  953.086313] i8042: [237880] 08 <- i8042 (interrupt, 1, 12)
[  953.087343] i8042: [237880] 00 <- i8042 (interrupt, 1, 12)
[  953.088368] i8042: [237880] 00 <- i8042 (interrupt, 1, 12)
[  953.093577] i8042: [237881] 8f <- i8042 (interrupt, 1, 12)
[  953.094486] i8042: [237882] 00 <- i8042 (interrupt, 1, 12)
[  953.095510] i8042: [237882] 00 <- i8042 (interrupt, 1, 12)
[  953.096538] i8042: [237882] 08 <- i8042 (interrupt, 1, 12)
[  953.097565] i8042: [237882] 00 <- i8042 (interrupt, 1, 12)
[  953.098591] i8042: [237883] 00 <- i8042 (interrupt, 1, 12)
[  953.103710] i8042: [237884] 8f <- i8042 (interrupt, 1, 12)
[  953.104737] i8042: [237884] 00 <- i8042 (interrupt, 1, 12)
[  953.105765] i8042: [237885] 00 <- i8042 (interrupt, 1, 12)
[  953.106789] i8042: [237885] 08 <- i8042 (interrupt, 1, 12)
[  953.107817] i8042: [237885] 00 <- i8042 (interrupt, 1, 12)
[  953.109134] i8042: [237885] 00 <- i8042 (interrupt, 1, 12)
[  953.113937] i8042: [237887] 8f <- i8042 (interrupt, 1, 12)
[  953.114844] i8042: [237887] 00 <- i8042 (interrupt, 1, 12)
[  953.116203] i8042: [237887] 00 <- i8042 (interrupt, 1, 12)
[  953.117232] i8042: [237887] 08 <- i8042 (interrupt, 1, 12)
[  953.118259] i8042: [237888] 00 <- i8042 (interrupt, 1, 12)
[  953.119284] i8042: [237888] 00 <- i8042 (interrupt, 1, 12)
[  953.124037] i8042: [237889] 8f <- i8042 (interrupt, 1, 12)
[  953.124946] i8042: [237889] 00 <- i8042 (interrupt, 1, 12)
[  953.125972] i8042: [237890] 00 <- i8042 (interrupt, 1, 12)
[  953.126999] i8042: [237890] 08 <- i8042 (interrupt, 1, 12)
[  953.128026] i8042: [237890] 00 <- i8042 (interrupt, 1, 12)
[  953.129051] i8042: [237890] 00 <- i8042 (interrupt, 1, 12)
[  953.134172] i8042: [237892] 8f <- i8042 (interrupt, 1, 12)
[  953.135199] i8042: [237892] 00 <- i8042 (interrupt, 1, 12)
[  953.136225] i8042: [237892] 00 <- i8042 (interrupt, 1, 12)
[  953.137252] i8042: [237892] 08 <- i8042 (interrupt, 1, 12)
[  953.138280] i8042: [237893] 00 <- i8042 (interrupt, 1, 12)
[  953.139305] i8042: [237893] 00 <- i8042 (interrupt, 1, 12)
[  953.144400] i8042: [237894] 8f <- i8042 (interrupt, 1, 12)
[  953.145455] i8042: [237894] 00 <- i8042 (interrupt, 1, 12)
[  953.146482] i8042: [237895] 00 <- i8042 (interrupt, 1, 12)
[  953.147490] i8042: [237895] 08 <- i8042 (interrupt, 1, 12)
[  953.148517] i8042: [237895] 00 <- i8042 (interrupt, 1, 12)
[  953.149543] i8042: [237895] 00 <- i8042 (interrupt, 1, 12)
[  954.049843] i8042: [238120] 8f <- i8042 (interrupt, 1, 12)
[  954.050949] i8042: [238121] 00 <- i8042 (interrupt, 1, 12)
[  954.051858] i8042: [238121] 00 <- i8042 (interrupt, 1, 12)
[  954.052883] i8042: [238121] 08 <- i8042 (interrupt, 1, 12)
[  954.053910] i8042: [238121] 40 <- i8042 (interrupt, 1, 12)
[  954.054937] i8042: [238122] 00 <- i8042 (interrupt, 1, 12)
[  954.060046] i8042: [238123] cf <- i8042 (interrupt, 1, 12)
[  954.060954] i8042: [238123] 00 <- i8042 (interrupt, 1, 12)
[  954.061981] i8042: [238123] 00 <- i8042 (interrupt, 1, 12)
[  954.063008] i8042: [238124] 08 <- i8042 (interrupt, 1, 12)
[  954.064035] i8042: [238124] 00 <- i8042 (interrupt, 1, 12)
[  954.065062] i8042: [238124] 00 <- i8042 (interrupt, 1, 12)
[  954.070182] i8042: [238125] 8f <- i8042 (interrupt, 1, 12)
[  954.071212] i8042: [238126] 00 <- i8042 (interrupt, 1, 12)
[  954.072219] i8042: [238126] 00 <- i8042 (interrupt, 1, 12)
[  954.073245] i8042: [238126] 08 <- i8042 (interrupt, 1, 12)
[  954.074273] i8042: [238126] 40 <- i8042 (interrupt, 1, 12)
[  954.075299] i8042: [238127] 00 <- i8042 (interrupt, 1, 12)
[  954.080421] i8042: [238128] cf <- i8042 (interrupt, 1, 12)
[  954.081445] i8042: [238128] 00 <- i8042 (interrupt, 1, 12)
[  954.082473] i8042: [238129] 70 <- i8042 (interrupt, 1, 12)
[  954.083498] i8042: [238129] 7f <- i8042 (interrupt, 1, 12)
[  954.084524] i8042: [238129] 00 <- i8042 (interrupt, 1, 12)
[  954.085844] i8042: [238129] ff <- i8042 (interrupt, 1, 12)
[  954.085850] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.090501] i8042: [238131] 8f <- i8042 (interrupt, 1, 12)
[  954.091526] i8042: [238131] 00 <- i8042 (interrupt, 1, 12)
[  954.093227] i8042: [238131] 00 <- i8042 (interrupt, 1, 12)
[  954.094253] i8042: [238131] 08 <- i8042 (interrupt, 1, 12)
[  954.095278] i8042: [238132] 40 <- i8042 (interrupt, 1, 12)
[  954.096305] i8042: [238132] 00 <- i8042 (interrupt, 1, 12)
[  954.100692] i8042: [238133] cf <- i8042 (interrupt, 1, 12)
[  954.101718] i8042: [238133] 00 <- i8042 (interrupt, 1, 12)
[  954.102745] i8042: [238134] 70 <- i8042 (interrupt, 1, 12)
[  954.103718] i8042: [238134] 7f <- i8042 (interrupt, 1, 12)
[  954.104739] i8042: [238134] 00 <- i8042 (interrupt, 1, 12)
[  954.105823] i8042: [238134] ff <- i8042 (interrupt, 1, 12)
[  954.105829] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.110799] i8042: [238136] cf <- i8042 (interrupt, 1, 12)
[  954.111824] i8042: [238136] 00 <- i8042 (interrupt, 1, 12)
[  954.112851] i8042: [238136] 00 <- i8042 (interrupt, 1, 12)
[  954.113877] i8042: [238136] 08 <- i8042 (interrupt, 1, 12)
[  954.114904] i8042: [238137] 00 <- i8042 (interrupt, 1, 12)
[  954.115929] i8042: [238137] 00 <- i8042 (interrupt, 1, 12)
[  954.121020] i8042: [238138] 8f <- i8042 (interrupt, 1, 12)
[  954.122048] i8042: [238138] 00 <- i8042 (interrupt, 1, 12)
[  954.123074] i8042: [238139] 00 <- i8042 (interrupt, 1, 12)
[  954.124100] i8042: [238139] 08 <- i8042 (interrupt, 1, 12)
[  954.125125] i8042: [238139] 40 <- i8042 (interrupt, 1, 12)
[  954.126153] i8042: [238139] 00 <- i8042 (interrupt, 1, 12)
[  954.131225] i8042: [238141] cf <- i8042 (interrupt, 1, 12)
[  954.132248] i8042: [238141] 00 <- i8042 (interrupt, 1, 12)
[  954.133274] i8042: [238141] 70 <- i8042 (interrupt, 1, 12)
[  954.134302] i8042: [238141] 7f <- i8042 (interrupt, 1, 12)
[  954.135329] i8042: [238142] 00 <- i8042 (interrupt, 1, 12)
[  954.136354] i8042: [238142] ff <- i8042 (interrupt, 1, 12)
[  954.136360] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.141326] i8042: [238143] 8f <- i8042 (interrupt, 1, 12)
[  954.142356] i8042: [238143] 00 <- i8042 (interrupt, 1, 12)
[  954.143382] i8042: [238144] 00 <- i8042 (interrupt, 1, 12)
[  954.144406] i8042: [238144] 08 <- i8042 (interrupt, 1, 12)
[  954.145432] i8042: [238144] 40 <- i8042 (interrupt, 1, 12)
[  954.146461] i8042: [238145] 00 <- i8042 (interrupt, 1, 12)
[  954.151551] i8042: [238146] cf <- i8042 (interrupt, 1, 12)
[  954.152544] i8042: [238146] 00 <- i8042 (interrupt, 1, 12)
[  954.153603] i8042: [238146] 70 <- i8042 (interrupt, 1, 12)
[  954.154631] i8042: [238147] 7f <- i8042 (interrupt, 1, 12)
[  954.155656] i8042: [238147] 00 <- i8042 (interrupt, 1, 12)
[  954.156681] i8042: [238147] ff <- i8042 (interrupt, 1, 12)
[  954.156687] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.161757] i8042: [238148] 8f <- i8042 (interrupt, 1, 12)
[  954.162783] i8042: [238149] 00 <- i8042 (interrupt, 1, 12)
[  954.163809] i8042: [238149] 00 <- i8042 (interrupt, 1, 12)
[  954.164835] i8042: [238149] 08 <- i8042 (interrupt, 1, 12)
[  954.165862] i8042: [238149] 40 <- i8042 (interrupt, 1, 12)
[  954.166889] i8042: [238150] 00 <- i8042 (interrupt, 1, 12)
[  954.171863] i8042: [238151] cf <- i8042 (interrupt, 1, 12)
[  954.172885] i8042: [238151] 00 <- i8042 (interrupt, 1, 12)
[  954.173913] i8042: [238151] 70 <- i8042 (interrupt, 1, 12)
[  954.174942] i8042: [238152] 7f <- i8042 (interrupt, 1, 12)
[  954.175910] i8042: [238152] 00 <- i8042 (interrupt, 1, 12)
[  954.176932] i8042: [238152] ff <- i8042 (interrupt, 1, 12)
[  954.176937] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.182082] i8042: [238153] 8f <- i8042 (interrupt, 1, 12)
[  954.183111] i8042: [238154] 00 <- i8042 (interrupt, 1, 12)
[  954.184134] i8042: [238154] 00 <- i8042 (interrupt, 1, 12)
[  954.185162] i8042: [238154] 08 <- i8042 (interrupt, 1, 12)
[  954.186188] i8042: [238154] 40 <- i8042 (interrupt, 1, 12)
[  954.187216] i8042: [238155] 00 <- i8042 (interrupt, 1, 12)
[  954.192270] i8042: [238156] cf <- i8042 (interrupt, 1, 12)
[  954.193296] i8042: [238156] 00 <- i8042 (interrupt, 1, 12)
[  954.194320] i8042: [238156] 7c <- i8042 (interrupt, 1, 12)
[  954.195350] i8042: [238157] 7f <- i8042 (interrupt, 1, 12)
[  954.196374] i8042: [238157] 02 <- i8042 (interrupt, 1, 12)
[  954.197400] i8042: [238157] ff <- i8042 (interrupt, 1, 12)
[  954.197406] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.202358] i8042: [238158] 8f <- i8042 (interrupt, 1, 12)
[  954.203383] i8042: [238159] 00 <- i8042 (interrupt, 1, 12)
[  954.204409] i8042: [238159] 00 <- i8042 (interrupt, 1, 12)
[  954.205435] i8042: [238159] 08 <- i8042 (interrupt, 1, 12)
[  954.206405] i8042: [238160] 40 <- i8042 (interrupt, 1, 12)
[  954.207776] i8042: [238160] 00 <- i8042 (interrupt, 1, 12)
[  954.212557] i8042: [238161] cf <- i8042 (interrupt, 1, 12)
[  954.213584] i8042: [238161] 00 <- i8042 (interrupt, 1, 12)
[  954.214611] i8042: [238162] 7c <- i8042 (interrupt, 1, 12)
[  954.215582] i8042: [238162] 7f <- i8042 (interrupt, 1, 12)
[  954.216662] i8042: [238162] 02 <- i8042 (interrupt, 1, 12)
[  954.217770] i8042: [238162] ff <- i8042 (interrupt, 1, 12)
[  954.217776] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.222791] i8042: [238164] 8f <- i8042 (interrupt, 1, 12)
[  954.223817] i8042: [238164] 00 <- i8042 (interrupt, 1, 12)
[  954.224844] i8042: [238164] 00 <- i8042 (interrupt, 1, 12)
[  954.225868] i8042: [238164] 08 <- i8042 (interrupt, 1, 12)
[  954.226896] i8042: [238165] 40 <- i8042 (interrupt, 1, 12)
[  954.228002] i8042: [238165] 00 <- i8042 (interrupt, 1, 12)
[  954.232927] i8042: [238166] cf <- i8042 (interrupt, 1, 12)
[  954.233952] i8042: [238166] 00 <- i8042 (interrupt, 1, 12)
[  954.234979] i8042: [238167] 00 <- i8042 (interrupt, 1, 12)
[  954.236007] i8042: [238167] 08 <- i8042 (interrupt, 1, 12)
[  954.237035] i8042: [238167] 00 <- i8042 (interrupt, 1, 12)
[  954.238141] i8042: [238167] 00 <- i8042 (interrupt, 1, 12)
[  954.243035] i8042: [238169] 8f <- i8042 (interrupt, 1, 12)
[  954.244088] i8042: [238169] 00 <- i8042 (interrupt, 1, 12)
[  954.245116] i8042: [238169] 00 <- i8042 (interrupt, 1, 12)
[  954.246142] i8042: [238169] 08 <- i8042 (interrupt, 1, 12)
[  954.247171] i8042: [238170] 40 <- i8042 (interrupt, 1, 12)
[  954.248277] i8042: [238170] 00 <- i8042 (interrupt, 1, 12)
[  954.253298] i8042: [238171] cf <- i8042 (interrupt, 1, 12)
[  954.254323] i8042: [238171] 7d <- i8042 (interrupt, 1, 12)
[  954.255348] i8042: [238172] 7c <- i8042 (interrupt, 1, 12)
[  954.256376] i8042: [238172] 7f <- i8042 (interrupt, 1, 12)
[  954.257483] i8042: [238172] 16 <- i8042 (interrupt, 1, 12)
[  954.258395] i8042: [238172] ff <- i8042 (interrupt, 1, 12)
[  954.258401] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.263413] i8042: [238174] cf <- i8042 (interrupt, 1, 12)
[  954.264440] i8042: [238174] 00 <- i8042 (interrupt, 1, 12)
[  954.265468] i8042: [238174] 00 <- i8042 (interrupt, 1, 12)
[  954.266453] i8042: [238175] 08 <- i8042 (interrupt, 1, 12)
[  954.267600] i8042: [238175] 00 <- i8042 (interrupt, 1, 12)
[  954.268508] i8042: [238175] 00 <- i8042 (interrupt, 1, 12)
[  954.273649] i8042: [238176] cf <- i8042 (interrupt, 1, 12)
[  954.274619] i8042: [238177] 00 <- i8042 (interrupt, 1, 12)
[  954.275641] i8042: [238177] 00 <- i8042 (interrupt, 1, 12)
[  954.276724] i8042: [238177] 08 <- i8042 (interrupt, 1, 12)
[  954.277835] i8042: [238177] 00 <- i8042 (interrupt, 1, 12)
[  954.278743] i8042: [238178] 00 <- i8042 (interrupt, 1, 12)
[  954.283783] i8042: [238179] 8f <- i8042 (interrupt, 1, 12)
[  954.284807] i8042: [238179] 00 <- i8042 (interrupt, 1, 12)
[  954.285812] i8042: [238179] 00 <- i8042 (interrupt, 1, 12)
[  954.286861] i8042: [238180] 08 <- i8042 (interrupt, 1, 12)
[  954.288751] i8042: [238180] 40 <- i8042 (interrupt, 1, 12)
[  954.289778] i8042: [238180] 00 <- i8042 (interrupt, 1, 12)
[  954.293993] i8042: [238181] cf <- i8042 (interrupt, 1, 12)
[  954.295019] i8042: [238182] 7d <- i8042 (interrupt, 1, 12)
[  954.296046] i8042: [238182] 7c <- i8042 (interrupt, 1, 12)
[  954.297071] i8042: [238182] 7f <- i8042 (interrupt, 1, 12)
[  954.298099] i8042: [238182] 16 <- i8042 (interrupt, 1, 12)
[  954.299207] i8042: [238183] ff <- i8042 (interrupt, 1, 12)
[  954.299213] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.304126] i8042: [238184] 8f <- i8042 (interrupt, 1, 12)
[  954.305152] i8042: [238184] 53 <- i8042 (interrupt, 1, 12)
[  954.306179] i8042: [238184] 2c <- i8042 (interrupt, 1, 12)
[  954.307209] i8042: [238185] 08 <- i8042 (interrupt, 1, 12)
[  954.308232] i8042: [238185] 63 <- i8042 (interrupt, 1, 12)
[  954.309338] i8042: [238185] 18 <- i8042 (interrupt, 1, 12)
[  954.314261] i8042: [238186] ef <- i8042 (interrupt, 1, 12)
[  954.315287] i8042: [238187] 7f <- i8042 (interrupt, 1, 12)
[  954.316314] i8042: [238187] 7f <- i8042 (interrupt, 1, 12)
[  954.317340] i8042: [238187] 7f <- i8042 (interrupt, 1, 12)
[  954.318366] i8042: [238187] 7e <- i8042 (interrupt, 1, 12)
[  954.319472] i8042: [238188] 77 <- i8042 (interrupt, 1, 12)
[  954.324515] i8042: [238189] cf <- i8042 (interrupt, 1, 12)
[  954.325541] i8042: [238189] 53 <- i8042 (interrupt, 1, 12)
[  954.326569] i8042: [238190] 3b <- i8042 (interrupt, 1, 12)
[  954.327555] i8042: [238190] 08 <- i8042 (interrupt, 1, 12)
[  954.328701] i8042: [238190] 2c <- i8042 (interrupt, 1, 12)
[  954.329893] i8042: [238190] 24 <- i8042 (interrupt, 1, 12)
[  954.334572] i8042: [238192] 8f <- i8042 (interrupt, 1, 12)
[  954.335643] i8042: [238192] 53 <- i8042 (interrupt, 1, 12)
[  954.336670] i8042: [238192] 3b <- i8042 (interrupt, 1, 12)
[  954.337695] i8042: [238192] 08 <- i8042 (interrupt, 1, 12)
[  954.338803] i8042: [238193] 6c <- i8042 (interrupt, 1, 12)
[  954.339708] i8042: [238193] 00 <- i8042 (interrupt, 1, 12)
[  954.344868] i8042: [238194] cf <- i8042 (interrupt, 1, 12)
[  954.345892] i8042: [238194] 7f <- i8042 (interrupt, 1, 12)
[  954.346878] i8042: [238195] 7e <- i8042 (interrupt, 1, 12)
[  954.347901] i8042: [238195] 7f <- i8042 (interrupt, 1, 12)
[  954.349007] i8042: [238195] 7e <- i8042 (interrupt, 1, 12)
[  954.349916] i8042: [238195] 62 <- i8042 (interrupt, 1, 12)
[  954.355000] i8042: [238197] 8f <- i8042 (interrupt, 1, 12)
[  954.356008] i8042: [238197] 53 <- i8042 (interrupt, 1, 12)
[  954.357033] i8042: [238197] 3a <- i8042 (interrupt, 1, 12)
[  954.358020] i8042: [238197] 08 <- i8042 (interrupt, 1, 12)
[  954.359122] i8042: [238198] 7f <- i8042 (interrupt, 1, 12)
[  954.360030] i8042: [238198] 00 <- i8042 (interrupt, 1, 12)
[  954.365110] i8042: [238199] cf <- i8042 (interrupt, 1, 12)
[  954.366136] i8042: [238199] 7f <- i8042 (interrupt, 1, 12)
[  954.367163] i8042: [238200] 7e <- i8042 (interrupt, 1, 12)
[  954.368191] i8042: [238200] 7f <- i8042 (interrupt, 1, 12)
[  954.369295] i8042: [238200] 7e <- i8042 (interrupt, 1, 12)
[  954.370203] i8042: [238200] 66 <- i8042 (interrupt, 1, 12)
[  954.375363] i8042: [238202] 8f <- i8042 (interrupt, 1, 12)
[  954.376388] i8042: [238202] 53 <- i8042 (interrupt, 1, 12)
[  954.377415] i8042: [238202] 3a <- i8042 (interrupt, 1, 12)
[  954.378520] i8042: [238203] 08 <- i8042 (interrupt, 1, 12)
[  954.379427] i8042: [238203] 7f <- i8042 (interrupt, 1, 12)
[  954.380454] i8042: [238203] 00 <- i8042 (interrupt, 1, 12)
[  954.386345] i8042: [238204] cf <- i8042 (interrupt, 1, 12)
[  954.387370] i8042: [238205] 7f <- i8042 (interrupt, 1, 12)
[  954.388533] i8042: [238205] 7e <- i8042 (interrupt, 1, 12)
[  954.389442] i8042: [238205] 7f <- i8042 (interrupt, 1, 12)
[  954.390468] i8042: [238205] 7e <- i8042 (interrupt, 1, 12)
[  954.391497] i8042: [238206] 67 <- i8042 (interrupt, 1, 12)
[  954.395709] i8042: [238207] 8f <- i8042 (interrupt, 1, 12)
[  954.396735] i8042: [238207] 53 <- i8042 (interrupt, 1, 12)
[  954.397758] i8042: [238207] 3a <- i8042 (interrupt, 1, 12)
[  954.398869] i8042: [238208] 08 <- i8042 (interrupt, 1, 12)
[  954.399774] i8042: [238208] 7f <- i8042 (interrupt, 1, 12)
[  954.400802] i8042: [238208] 00 <- i8042 (interrupt, 1, 12)
[  954.405843] i8042: [238209] ef <- i8042 (interrupt, 1, 12)
[  954.406869] i8042: [238210] 7f <- i8042 (interrupt, 1, 12)
[  954.407895] i8042: [238210] 7f <- i8042 (interrupt, 1, 12)
[  954.409003] i8042: [238210] 7f <- i8042 (interrupt, 1, 12)
[  954.409911] i8042: [238210] 7e <- i8042 (interrupt, 1, 12)
[  954.410938] i8042: [238211] 77 <- i8042 (interrupt, 1, 12)
[  954.416024] i8042: [238212] 8f <- i8042 (interrupt, 1, 12)
[  954.417105] i8042: [238212] 53 <- i8042 (interrupt, 1, 12)
[  954.418099] i8042: [238212] 54 <- i8042 (interrupt, 1, 12)
[  954.419182] i8042: [238213] 08 <- i8042 (interrupt, 1, 12)
[  954.420089] i8042: [238213] 7d <- i8042 (interrupt, 1, 12)
[  954.421115] i8042: [238213] 00 <- i8042 (interrupt, 1, 12)
[  954.426213] i8042: [238214] cf <- i8042 (interrupt, 1, 12)
[  954.427240] i8042: [238215] 7f <- i8042 (interrupt, 1, 12)
[  954.428307] i8042: [238215] 7e <- i8042 (interrupt, 1, 12)
[  954.429212] i8042: [238215] 7f <- i8042 (interrupt, 1, 12)
[  954.430238] i8042: [238215] 7e <- i8042 (interrupt, 1, 12)
[  954.431306] i8042: [238216] 67 <- i8042 (interrupt, 1, 12)
[  954.436346] i8042: [238217] 9f <- i8042 (interrupt, 1, 12)
[  954.437371] i8042: [238217] 6e <- i8042 (interrupt, 1, 12)
[  954.438479] i8042: [238217] 54 <- i8042 (interrupt, 1, 12)
[  954.439331] i8042: [238218] 08 <- i8042 (interrupt, 1, 12)
[  954.440355] i8042: [238218] 7d <- i8042 (interrupt, 1, 12)
[  954.441385] i8042: [238218] 19 <- i8042 (interrupt, 1, 12)
[  954.446594] i8042: [238220] ef <- i8042 (interrupt, 1, 12)
[  954.447624] i8042: [238220] 7f <- i8042 (interrupt, 1, 12)
[  954.448730] i8042: [238220] 7f <- i8042 (interrupt, 1, 12)
[  954.449584] i8042: [238220] 7f <- i8042 (interrupt, 1, 12)
[  954.450607] i8042: [238221] 7e <- i8042 (interrupt, 1, 12)
[  954.451981] i8042: [238221] 77 <- i8042 (interrupt, 1, 12)
[  954.456703] i8042: [238222] 9f <- i8042 (interrupt, 1, 12)
[  954.457729] i8042: [238222] 6e <- i8042 (interrupt, 1, 12)
[  954.458805] i8042: [238223] 54 <- i8042 (interrupt, 1, 12)
[  954.459745] i8042: [238223] 08 <- i8042 (interrupt, 1, 12)
[  954.460774] i8042: [238223] 7c <- i8042 (interrupt, 1, 12)
[  954.461800] i8042: [238223] 00 <- i8042 (interrupt, 1, 12)
[  954.466937] i8042: [238225] ef <- i8042 (interrupt, 1, 12)
[  954.467965] i8042: [238225] 7f <- i8042 (interrupt, 1, 12)
[  954.469071] i8042: [238225] 7f <- i8042 (interrupt, 1, 12)
[  954.469979] i8042: [238225] 7f <- i8042 (interrupt, 1, 12)
[  954.471007] i8042: [238226] 7e <- i8042 (interrupt, 1, 12)
[  954.472033] i8042: [238226] 77 <- i8042 (interrupt, 1, 12)
[  954.477072] i8042: [238227] 9f <- i8042 (interrupt, 1, 12)
[  954.478179] i8042: [238227] 53 <- i8042 (interrupt, 1, 12)
[  954.479088] i8042: [238228] 54 <- i8042 (interrupt, 1, 12)
[  954.480115] i8042: [238228] 08 <- i8042 (interrupt, 1, 12)
[  954.481142] i8042: [238228] 7e <- i8042 (interrupt, 1, 12)
[  954.482167] i8042: [238228] 1a <- i8042 (interrupt, 1, 12)
[  954.487235] i8042: [238230] ef <- i8042 (interrupt, 1, 12)
[  954.488343] i8042: [238230] 7f <- i8042 (interrupt, 1, 12)
[  954.489253] i8042: [238230] 7f <- i8042 (interrupt, 1, 12)
[  954.490278] i8042: [238230] 7f <- i8042 (interrupt, 1, 12)
[  954.491308] i8042: [238231] 7e <- i8042 (interrupt, 1, 12)
[  954.492332] i8042: [238231] 77 <- i8042 (interrupt, 1, 12)
[  954.497374] i8042: [238232] 8f <- i8042 (interrupt, 1, 12)
[  954.498479] i8042: [238232] 53 <- i8042 (interrupt, 1, 12)
[  954.499387] i8042: [238233] 54 <- i8042 (interrupt, 1, 12)
[  954.500414] i8042: [238233] 08 <- i8042 (interrupt, 1, 12)
[  954.501440] i8042: [238233] 7e <- i8042 (interrupt, 1, 12)
[  954.502466] i8042: [238233] 1a <- i8042 (interrupt, 1, 12)
[  954.507693] i8042: [238235] ef <- i8042 (interrupt, 1, 12)
[  954.508601] i8042: [238235] 7f <- i8042 (interrupt, 1, 12)
[  954.509629] i8042: [238235] 7f <- i8042 (interrupt, 1, 12)
[  954.510657] i8042: [238236] 7f <- i8042 (interrupt, 1, 12)
[  954.511683] i8042: [238236] 7e <- i8042 (interrupt, 1, 12)
[  954.512710] i8042: [238236] 77 <- i8042 (interrupt, 1, 12)
[  954.517774] i8042: [238237] af <- i8042 (interrupt, 1, 12)
[  954.518799] i8042: [238238] 6e <- i8042 (interrupt, 1, 12)
[  954.519854] i8042: [238238] 54 <- i8042 (interrupt, 1, 12)
[  954.520909] i8042: [238238] 08 <- i8042 (interrupt, 1, 12)
[  954.521936] i8042: [238238] 7f <- i8042 (interrupt, 1, 12)
[  954.522962] i8042: [238239] 1c <- i8042 (interrupt, 1, 12)
[  954.528063] i8042: [238240] ef <- i8042 (interrupt, 1, 12)
[  954.529090] i8042: [238240] 7f <- i8042 (interrupt, 1, 12)
[  954.530116] i8042: [238240] 7f <- i8042 (interrupt, 1, 12)
[  954.531146] i8042: [238241] 7f <- i8042 (interrupt, 1, 12)
[  954.532171] i8042: [238241] 7e <- i8042 (interrupt, 1, 12)
[  954.533199] i8042: [238241] 77 <- i8042 (interrupt, 1, 12)
[  954.538200] i8042: [238242] 8f <- i8042 (interrupt, 1, 12)
[  954.539108] i8042: [238243] 53 <- i8042 (interrupt, 1, 12)
[  954.540137] i8042: [238243] 54 <- i8042 (interrupt, 1, 12)
[  954.541164] i8042: [238243] 08 <- i8042 (interrupt, 1, 12)
[  954.542191] i8042: [238243] 7e <- i8042 (interrupt, 1, 12)
[  954.543218] i8042: [238244] 1a <- i8042 (interrupt, 1, 12)
[  954.548339] i8042: [238245] ef <- i8042 (interrupt, 1, 12)
[  954.549308] i8042: [238245] 7f <- i8042 (interrupt, 1, 12)
[  954.550333] i8042: [238245] 7f <- i8042 (interrupt, 1, 12)
[  954.551392] i8042: [238246] 7f <- i8042 (interrupt, 1, 12)
[  954.552419] i8042: [238246] 7e <- i8042 (interrupt, 1, 12)
[  954.553470] i8042: [238246] 73 <- i8042 (interrupt, 1, 12)
[  954.558429] i8042: [238247] 8f <- i8042 (interrupt, 1, 12)
[  954.559454] i8042: [238248] 53 <- i8042 (interrupt, 1, 12)
[  954.560480] i8042: [238248] 54 <- i8042 (interrupt, 1, 12)
[  954.561507] i8042: [238248] 08 <- i8042 (interrupt, 1, 12)
[  954.562534] i8042: [238248] 7e <- i8042 (interrupt, 1, 12)
[  954.563561] i8042: [238249] 1a <- i8042 (interrupt, 1, 12)
[  954.568584] i8042: [238250] ef <- i8042 (interrupt, 1, 12)
[  954.569608] i8042: [238250] 7f <- i8042 (interrupt, 1, 12)
[  954.570692] i8042: [238251] 7f <- i8042 (interrupt, 1, 12)
[  954.571718] i8042: [238251] 7f <- i8042 (interrupt, 1, 12)
[  954.572743] i8042: [238251] 7e <- i8042 (interrupt, 1, 12)
[  954.573771] i8042: [238251] 73 <- i8042 (interrupt, 1, 12)
[  954.578739] i8042: [238253] 9f <- i8042 (interrupt, 1, 12)
[  954.579754] i8042: [238253] 6e <- i8042 (interrupt, 1, 12)
[  954.581737] i8042: [238253] 54 <- i8042 (interrupt, 1, 12)
[  954.582788] i8042: [238254] 08 <- i8042 (interrupt, 1, 12)
[  954.583792] i8042: [238254] 7e <- i8042 (interrupt, 1, 12)
[  954.584813] i8042: [238254] 1d <- i8042 (interrupt, 1, 12)
[  954.588998] i8042: [238255] ef <- i8042 (interrupt, 1, 12)
[  954.590024] i8042: [238255] 7f <- i8042 (interrupt, 1, 12)
[  954.591052] i8042: [238256] 7f <- i8042 (interrupt, 1, 12)
[  954.592076] i8042: [238256] 7f <- i8042 (interrupt, 1, 12)
[  954.593103] i8042: [238256] 7e <- i8042 (interrupt, 1, 12)
[  954.594091] i8042: [238256] 77 <- i8042 (interrupt, 1, 12)
[  954.599105] i8042: [238258] 9f <- i8042 (interrupt, 1, 12)
[  954.600129] i8042: [238258] 53 <- i8042 (interrupt, 1, 12)
[  954.601155] i8042: [238258] 54 <- i8042 (interrupt, 1, 12)
[  954.602181] i8042: [238258] 08 <- i8042 (interrupt, 1, 12)
[  954.603167] i8042: [238259] 7e <- i8042 (interrupt, 1, 12)
[  954.604204] i8042: [238259] 1a <- i8042 (interrupt, 1, 12)
[  954.609324] i8042: [238260] ef <- i8042 (interrupt, 1, 12)
[  954.610309] i8042: [238260] 7f <- i8042 (interrupt, 1, 12)
[  954.611327] i8042: [238261] 7e <- i8042 (interrupt, 1, 12)
[  954.612351] i8042: [238261] 7f <- i8042 (interrupt, 1, 12)
[  954.613377] i8042: [238261] 7e <- i8042 (interrupt, 1, 12)
[  954.614420] i8042: [238261] 77 <- i8042 (interrupt, 1, 12)
[  954.619545] i8042: [238263] 8f <- i8042 (interrupt, 1, 12)
[  954.620570] i8042: [238263] 6e <- i8042 (interrupt, 1, 12)
[  954.621596] i8042: [238263] 38 <- i8042 (interrupt, 1, 12)
[  954.622584] i8042: [238263] 08 <- i8042 (interrupt, 1, 12)
[  954.623646] i8042: [238264] 78 <- i8042 (interrupt, 1, 12)
[  954.624674] i8042: [238264] 3e <- i8042 (interrupt, 1, 12)
[  954.629645] i8042: [238265] ef <- i8042 (interrupt, 1, 12)
[  954.630688] i8042: [238266] 7f <- i8042 (interrupt, 1, 12)
[  954.631682] i8042: [238266] 7f <- i8042 (interrupt, 1, 12)
[  954.632709] i8042: [238266] 7f <- i8042 (interrupt, 1, 12)
[  954.633733] i8042: [238266] 7e <- i8042 (interrupt, 1, 12)
[  954.634723] i8042: [238267] 77 <- i8042 (interrupt, 1, 12)
[  954.639839] i8042: [238268] 8f <- i8042 (interrupt, 1, 12)
[  954.640844] i8042: [238268] 6e <- i8042 (interrupt, 1, 12)
[  954.641871] i8042: [238268] 54 <- i8042 (interrupt, 1, 12)
[  954.642898] i8042: [238269] 08 <- i8042 (interrupt, 1, 12)
[  954.643923] i8042: [238269] 7e <- i8042 (interrupt, 1, 12)
[  954.644948] i8042: [238269] 1c <- i8042 (interrupt, 1, 12)
[  954.649982] i8042: [238270] ef <- i8042 (interrupt, 1, 12)
[  954.651039] i8042: [238271] 7f <- i8042 (interrupt, 1, 12)
[  954.652062] i8042: [238271] 7f <- i8042 (interrupt, 1, 12)
[  954.653058] i8042: [238271] 7f <- i8042 (interrupt, 1, 12)
[  954.654118] i8042: [238271] 7e <- i8042 (interrupt, 1, 12)
[  954.655248] i8042: [238272] 77 <- i8042 (interrupt, 1, 12)
[  954.660165] i8042: [238273] af <- i8042 (interrupt, 1, 12)
[  954.661189] i8042: [238273] 53 <- i8042 (interrupt, 1, 12)
[  954.662194] i8042: [238273] 38 <- i8042 (interrupt, 1, 12)
[  954.663243] i8042: [238274] 08 <- i8042 (interrupt, 1, 12)
[  954.664269] i8042: [238274] 7a <- i8042 (interrupt, 1, 12)
[  954.665375] i8042: [238274] 3e <- i8042 (interrupt, 1, 12)
[  954.670391] i8042: [238275] ef <- i8042 (interrupt, 1, 12)
[  954.671417] i8042: [238276] 7f <- i8042 (interrupt, 1, 12)
[  954.672441] i8042: [238276] 7f <- i8042 (interrupt, 1, 12)
[  954.673469] i8042: [238276] 7f <- i8042 (interrupt, 1, 12)
[  954.674574] i8042: [238276] 7e <- i8042 (interrupt, 1, 12)
[  954.675481] i8042: [238277] 73 <- i8042 (interrupt, 1, 12)
[  954.680497] i8042: [238278] 8f <- i8042 (interrupt, 1, 12)
[  954.681525] i8042: [238278] 53 <- i8042 (interrupt, 1, 12)
[  954.682551] i8042: [238278] 54 <- i8042 (interrupt, 1, 12)
[  954.683577] i8042: [238279] 08 <- i8042 (interrupt, 1, 12)
[  954.684681] i8042: [238279] 7e <- i8042 (interrupt, 1, 12)
[  954.685589] i8042: [238279] 1a <- i8042 (interrupt, 1, 12)
[  954.690709] i8042: [238281] ef <- i8042 (interrupt, 1, 12)
[  954.691769] i8042: [238281] 7f <- i8042 (interrupt, 1, 12)
[  954.692795] i8042: [238281] 7f <- i8042 (interrupt, 1, 12)
[  954.693821] i8042: [238281] 7f <- i8042 (interrupt, 1, 12)
[  954.694894] i8042: [238282] 7e <- i8042 (interrupt, 1, 12)
[  954.695833] i8042: [238282] 77 <- i8042 (interrupt, 1, 12)
[  954.700828] i8042: [238283] 8f <- i8042 (interrupt, 1, 12)
[  954.701854] i8042: [238283] 53 <- i8042 (interrupt, 1, 12)
[  954.702881] i8042: [238284] 38 <- i8042 (interrupt, 1, 12)
[  954.703906] i8042: [238284] 08 <- i8042 (interrupt, 1, 12)
[  954.705014] i8042: [238284] 79 <- i8042 (interrupt, 1, 12)
[  954.705922] i8042: [238284] 3e <- i8042 (interrupt, 1, 12)
[  954.711080] i8042: [238286] ef <- i8042 (interrupt, 1, 12)
[  954.712106] i8042: [238286] 7f <- i8042 (interrupt, 1, 12)
[  954.713133] i8042: [238286] 7f <- i8042 (interrupt, 1, 12)
[  954.714160] i8042: [238286] 7f <- i8042 (interrupt, 1, 12)
[  954.715269] i8042: [238287] 7e <- i8042 (interrupt, 1, 12)
[  954.716175] i8042: [238287] 73 <- i8042 (interrupt, 1, 12)
[  954.721218] i8042: [238288] 9f <- i8042 (interrupt, 1, 12)
[  954.722216] i8042: [238288] 6e <- i8042 (interrupt, 1, 12)
[  954.723211] i8042: [238289] 54 <- i8042 (interrupt, 1, 12)
[  954.724383] i8042: [238289] 08 <- i8042 (interrupt, 1, 12)
[  954.725261] i8042: [238289] 7d <- i8042 (interrupt, 1, 12)
[  954.726289] i8042: [238289] 1b <- i8042 (interrupt, 1, 12)
[  954.731448] i8042: [238291] ef <- i8042 (interrupt, 1, 12)
[  954.732474] i8042: [238291] 7f <- i8042 (interrupt, 1, 12)
[  954.733502] i8042: [238291] 7f <- i8042 (interrupt, 1, 12)
[  954.734608] i8042: [238291] 7f <- i8042 (interrupt, 1, 12)
[  954.735517] i8042: [238292] 7e <- i8042 (interrupt, 1, 12)
[  954.736544] i8042: [238292] 73 <- i8042 (interrupt, 1, 12)
[  954.741584] i8042: [238293] 9f <- i8042 (interrupt, 1, 12)
[  954.742586] i8042: [238293] 53 <- i8042 (interrupt, 1, 12)
[  954.743636] i8042: [238294] 54 <- i8042 (interrupt, 1, 12)
[  954.744743] i8042: [238294] 08 <- i8042 (interrupt, 1, 12)
[  954.745653] i8042: [238294] 7e <- i8042 (interrupt, 1, 12)
[  954.746679] i8042: [238294] 19 <- i8042 (interrupt, 1, 12)
[  954.751722] i8042: [238296] ef <- i8042 (interrupt, 1, 12)
[  954.752747] i8042: [238296] 7f <- i8042 (interrupt, 1, 12)
[  954.753774] i8042: [238296] 7e <- i8042 (interrupt, 1, 12)
[  954.754886] i8042: [238297] 7f <- i8042 (interrupt, 1, 12)
[  954.755716] i8042: [238297] 7e <- i8042 (interrupt, 1, 12)
[  954.756744] i8042: [238297] 67 <- i8042 (interrupt, 1, 12)
[  954.761957] i8042: [238298] bf <- i8042 (interrupt, 1, 12)
[  954.762986] i8042: [238299] 53 <- i8042 (interrupt, 1, 12)
[  954.764012] i8042: [238299] 54 <- i8042 (interrupt, 1, 12)
[  954.765119] i8042: [238299] 08 <- i8042 (interrupt, 1, 12)
[  954.766006] i8042: [238299] 6e <- i8042 (interrupt, 1, 12)
[  954.767027] i8042: [238300] 19 <- i8042 (interrupt, 1, 12)
[  954.772097] i8042: [238301] ef <- i8042 (interrupt, 1, 12)
[  954.773122] i8042: [238301] 7f <- i8042 (interrupt, 1, 12)
[  954.774223] i8042: [238301] 7f <- i8042 (interrupt, 1, 12)
[  954.775128] i8042: [238302] 7f <- i8042 (interrupt, 1, 12)
[  954.777203] i8042: [238302] 7e <- i8042 (interrupt, 1, 12)
[  954.778209] i8042: [238302] 77 <- i8042 (interrupt, 1, 12)
[  954.782306] i8042: [238303] 9f <- i8042 (interrupt, 1, 12)
[  954.783333] i8042: [238304] 6e <- i8042 (interrupt, 1, 12)
[  954.784410] i8042: [238304] 54 <- i8042 (interrupt, 1, 12)
[  954.785347] i8042: [238304] 08 <- i8042 (interrupt, 1, 12)
[  954.786322] i8042: [238304] 7d <- i8042 (interrupt, 1, 12)
[  954.787343] i8042: [238305] 1a <- i8042 (interrupt, 1, 12)
[  954.792439] i8042: [238306] ef <- i8042 (interrupt, 1, 12)
[  954.793468] i8042: [238306] 7f <- i8042 (interrupt, 1, 12)
[  954.794576] i8042: [238306] 7e <- i8042 (interrupt, 1, 12)
[  954.795486] i8042: [238307] 7f <- i8042 (interrupt, 1, 12)
[  954.796510] i8042: [238307] 7e <- i8042 (interrupt, 1, 12)
[  954.797538] i8042: [238307] 67 <- i8042 (interrupt, 1, 12)
[  954.802578] i8042: [238308] bf <- i8042 (interrupt, 1, 12)
[  954.803603] i8042: [238309] 53 <- i8042 (interrupt, 1, 12)
[  954.804710] i8042: [238309] 3b <- i8042 (interrupt, 1, 12)
[  954.805618] i8042: [238309] 08 <- i8042 (interrupt, 1, 12)
[  954.806646] i8042: [238309] 69 <- i8042 (interrupt, 1, 12)
[  954.807672] i8042: [238310] 2b <- i8042 (interrupt, 1, 12)
[  954.812829] i8042: [238311] ef <- i8042 (interrupt, 1, 12)
[  954.813855] i8042: [238311] 7f <- i8042 (interrupt, 1, 12)
[  954.814963] i8042: [238312] 7f <- i8042 (interrupt, 1, 12)
[  954.815828] i8042: [238312] 7f <- i8042 (interrupt, 1, 12)
[  954.816897] i8042: [238312] 7e <- i8042 (interrupt, 1, 12)
[  954.817896] i8042: [238312] 77 <- i8042 (interrupt, 1, 12)
[  954.822927] i8042: [238314] 8f <- i8042 (interrupt, 1, 12)
[  954.824088] i8042: [238314] 53 <- i8042 (interrupt, 1, 12)
[  954.824998] i8042: [238314] 54 <- i8042 (interrupt, 1, 12)
[  954.826023] i8042: [238314] 08 <- i8042 (interrupt, 1, 12)
[  954.827023] i8042: [238315] 7c <- i8042 (interrupt, 1, 12)
[  954.828048] i8042: [238315] 00 <- i8042 (interrupt, 1, 12)
[  954.833117] i8042: [238316] ef <- i8042 (interrupt, 1, 12)
[  954.834224] i8042: [238316] 7f <- i8042 (interrupt, 1, 12)
[  954.835133] i8042: [238317] 7f <- i8042 (interrupt, 1, 12)
[  954.836158] i8042: [238317] 7f <- i8042 (interrupt, 1, 12)
[  954.837185] i8042: [238317] 7e <- i8042 (interrupt, 1, 12)
[  954.838212] i8042: [238317] 77 <- i8042 (interrupt, 1, 12)
[  954.843312] i8042: [238319] af <- i8042 (interrupt, 1, 12)
[  954.844415] i8042: [238319] 53 <- i8042 (interrupt, 1, 12)
[  954.845323] i8042: [238319] 54 <- i8042 (interrupt, 1, 12)
[  954.846349] i8042: [238319] 08 <- i8042 (interrupt, 1, 12)
[  954.847375] i8042: [238320] 6b <- i8042 (interrupt, 1, 12)
[  954.848402] i8042: [238320] 00 <- i8042 (interrupt, 1, 12)
[  954.853440] i8042: [238321] ef <- i8042 (interrupt, 1, 12)
[  954.854581] i8042: [238321] 7f <- i8042 (interrupt, 1, 12)
[  954.855470] i8042: [238322] 7f <- i8042 (interrupt, 1, 12)
[  954.856516] i8042: [238322] 7f <- i8042 (interrupt, 1, 12)
[  954.857542] i8042: [238322] 7e <- i8042 (interrupt, 1, 12)
[  954.858569] i8042: [238322] 77 <- i8042 (interrupt, 1, 12)
[  954.863609] i8042: [238324] bf <- i8042 (interrupt, 1, 12)
[  954.864713] i8042: [238324] 53 <- i8042 (interrupt, 1, 12)
[  954.865602] i8042: [238324] 54 <- i8042 (interrupt, 1, 12)
[  954.866647] i8042: [238324] 08 <- i8042 (interrupt, 1, 12)
[  954.867696] i8042: [238325] 6c <- i8042 (interrupt, 1, 12)
[  954.868722] i8042: [238325] 16 <- i8042 (interrupt, 1, 12)
[  954.874993] i8042: [238327] ef <- i8042 (interrupt, 1, 12)
[  954.876019] i8042: [238327] 7f <- i8042 (interrupt, 1, 12)
[  954.877044] i8042: [238327] 7f <- i8042 (interrupt, 1, 12)
[  954.878071] i8042: [238327] 7f <- i8042 (interrupt, 1, 12)
[  954.879099] i8042: [238328] 7e <- i8042 (interrupt, 1, 12)
[  954.880124] i8042: [238328] 77 <- i8042 (interrupt, 1, 12)
[  954.883983] i8042: [238329] 8f <- i8042 (interrupt, 1, 12)
[  954.885087] i8042: [238329] 53 <- i8042 (interrupt, 1, 12)
[  954.885995] i8042: [238329] 54 <- i8042 (interrupt, 1, 12)
[  954.887023] i8042: [238330] 08 <- i8042 (interrupt, 1, 12)
[  954.888048] i8042: [238330] 7d <- i8042 (interrupt, 1, 12)
[  954.889074] i8042: [238330] 00 <- i8042 (interrupt, 1, 12)
[  954.894228] i8042: [238331] cf <- i8042 (interrupt, 1, 12)
[  954.895372] i8042: [238332] 7f <- i8042 (interrupt, 1, 12)
[  954.925882] i8042: [238339] 7e <- i8042 (interrupt, 1, 12)
[  954.925926] i8042: [238339] 7f <- i8042 (interrupt, 1, 12)
[  954.926065] i8042: [238339] 7e <- i8042 (interrupt, 1, 12)
[  954.926205] i8042: [238339] 66 <- i8042 (interrupt, 1, 12)
[  954.926337] i8042: [238339] 8f <- i8042 (interrupt, 1, 12)
[  954.926457] i8042: [238339] 53 <- i8042 (interrupt, 1, 12)
[  954.926596] i8042: [238339] 54 <- i8042 (interrupt, 1, 12)
[  954.926729] i8042: [238339] 08 <- i8042 (interrupt, 1, 12)
[  954.926848] i8042: [238340] 7d <- i8042 (interrupt, 1, 12)
[  954.927998] i8042: [238340] 00 <- i8042 (interrupt, 1, 12)
[  954.929083] i8042: [238340] cf <- i8042 (interrupt, 1, 12)
[  954.930107] i8042: [238340] 7f <- i8042 (interrupt, 1, 12)
[  954.931107] i8042: [238341] 7e <- i8042 (interrupt, 1, 12)
[  954.932160] i8042: [238341] 7f <- i8042 (interrupt, 1, 12)
[  954.933187] i8042: [238341] 7e <- i8042 (interrupt, 1, 12)
[  954.934187] i8042: [238341] 66 <- i8042 (interrupt, 1, 12)
[  954.935316] i8042: [238342] bf <- i8042 (interrupt, 1, 12)
[  954.936227] i8042: [238342] 3b <- i8042 (interrupt, 1, 12)
[  954.937254] i8042: [238342] 2c <- i8042 (interrupt, 1, 12)
[  954.938279] i8042: [238342] 08 <- i8042 (interrupt, 1, 12)
[  954.939316] i8042: [238343] 7b <- i8042 (interrupt, 1, 12)
[  954.940613] i8042: [238343] 16 <- i8042 (interrupt, 1, 12)
[  954.945100] i8042: [238344] ef <- i8042 (interrupt, 1, 12)
[  954.946207] i8042: [238344] 7f <- i8042 (interrupt, 1, 12)
[  954.947120] i8042: [238345] 7f <- i8042 (interrupt, 1, 12)
[  954.948126] i8042: [238345] 7f <- i8042 (interrupt, 1, 12)
[  954.949152] i8042: [238345] 7e <- i8042 (interrupt, 1, 12)
[  954.950157] i8042: [238345] 77 <- i8042 (interrupt, 1, 12)
[  954.955195] i8042: [238347] cf <- i8042 (interrupt, 1, 12)
[  954.956325] i8042: [238347] 00 <- i8042 (interrupt, 1, 12)
[  954.957234] i8042: [238347] 00 <- i8042 (interrupt, 1, 12)
[  954.958237] i8042: [238347] 08 <- i8042 (interrupt, 1, 12)
[  954.959296] i8042: [238348] 00 <- i8042 (interrupt, 1, 12)
[  954.960297] i8042: [238348] 00 <- i8042 (interrupt, 1, 12)
[  954.965398] i8042: [238349] bf <- i8042 (interrupt, 1, 12)
[  954.966517] i8042: [238349] 3b <- i8042 (interrupt, 1, 12)
[  954.967469] i8042: [238350] 2c <- i8042 (interrupt, 1, 12)
[  954.968493] i8042: [238350] 08 <- i8042 (interrupt, 1, 12)
[  954.969521] i8042: [238350] 7b <- i8042 (interrupt, 1, 12)
[  954.970548] i8042: [238350] 00 <- i8042 (interrupt, 1, 12)
[  954.975568] i8042: [238352] cf <- i8042 (interrupt, 1, 12)
[  954.976646] i8042: [238352] 7f <- i8042 (interrupt, 1, 12)
[  954.977581] i8042: [238352] 7c <- i8042 (interrupt, 1, 12)
[  954.978610] i8042: [238352] 7f <- i8042 (interrupt, 1, 12)
[  954.979639] i8042: [238353] 1e <- i8042 (interrupt, 1, 12)
[  954.980665] i8042: [238353] ff <- i8042 (interrupt, 1, 12)
[  954.980671] psmouse serio1: alps: v3 discard packet[5] = ff
[  954.985825] i8042: [238354] bf <- i8042 (interrupt, 1, 12)
[  954.986912] i8042: [238355] 3b <- i8042 (interrupt, 1, 12)
[  954.987821] i8042: [238355] 2c <- i8042 (interrupt, 1, 12)
[  954.988850] i8042: [238355] 08 <- i8042 (interrupt, 1, 12)
[  954.989876] i8042: [238355] 7b <- i8042 (interrupt, 1, 12)
[  954.990903] i8042: [238356] 00 <- i8042 (interrupt, 1, 12)
[  954.995979] i8042: [238357] cf <- i8042 (interrupt, 1, 12)
[  954.996887] i8042: [238357] 7f <- i8042 (interrupt, 1, 12)
[  954.997914] i8042: [238357] 7c <- i8042 (interrupt, 1, 12)
[  954.998945] i8042: [238358] 7f <- i8042 (interrupt, 1, 12)
[  955.000005] i8042: [238358] 1e <- i8042 (interrupt, 1, 12)
[  955.001032] i8042: [238358] ff <- i8042 (interrupt, 1, 12)
[  955.001038] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.006152] i8042: [238359] cf <- i8042 (interrupt, 1, 12)
[  955.007179] i8042: [238360] 00 <- i8042 (interrupt, 1, 12)
[  955.008183] i8042: [238360] 00 <- i8042 (interrupt, 1, 12)
[  955.009209] i8042: [238360] 08 <- i8042 (interrupt, 1, 12)
[  955.010231] i8042: [238360] 00 <- i8042 (interrupt, 1, 12)
[  955.011262] i8042: [238361] 00 <- i8042 (interrupt, 1, 12)
[  955.016380] i8042: [238362] cf <- i8042 (interrupt, 1, 12)
[  955.017434] i8042: [238362] 4b <- i8042 (interrupt, 1, 12)
[  955.018461] i8042: [238362] 3b <- i8042 (interrupt, 1, 12)
[  955.019487] i8042: [238363] 08 <- i8042 (interrupt, 1, 12)
[  955.020514] i8042: [238363] 21 <- i8042 (interrupt, 1, 12)
[  955.021542] i8042: [238363] 29 <- i8042 (interrupt, 1, 12)
[  955.026502] i8042: [238364] cf <- i8042 (interrupt, 1, 12)
[  955.027529] i8042: [238365] 00 <- i8042 (interrupt, 1, 12)
[  955.028554] i8042: [238365] 00 <- i8042 (interrupt, 1, 12)
[  955.029582] i8042: [238365] 08 <- i8042 (interrupt, 1, 12)
[  955.030609] i8042: [238365] 00 <- i8042 (interrupt, 1, 12)
[  955.031636] i8042: [238366] 00 <- i8042 (interrupt, 1, 12)
[  955.036599] i8042: [238367] cf <- i8042 (interrupt, 1, 12)
[  955.037604] i8042: [238367] 00 <- i8042 (interrupt, 1, 12)
[  955.038633] i8042: [238367] 00 <- i8042 (interrupt, 1, 12)
[  955.039661] i8042: [238368] 08 <- i8042 (interrupt, 1, 12)
[  955.040686] i8042: [238368] 00 <- i8042 (interrupt, 1, 12)
[  955.041711] i8042: [238368] 00 <- i8042 (interrupt, 1, 12)
[  955.046750] i8042: [238369] 8f <- i8042 (interrupt, 1, 12)
[  955.047817] i8042: [238370] 4b <- i8042 (interrupt, 1, 12)
[  955.048845] i8042: [238370] 3b <- i8042 (interrupt, 1, 12)
[  955.049871] i8042: [238370] 08 <- i8042 (interrupt, 1, 12)
[  955.050874] i8042: [238370] 61 <- i8042 (interrupt, 1, 12)
[  955.051900] i8042: [238371] 00 <- i8042 (interrupt, 1, 12)
[  955.056978] i8042: [238372] cf <- i8042 (interrupt, 1, 12)
[  955.058028] i8042: [238372] 00 <- i8042 (interrupt, 1, 12)
[  955.059057] i8042: [238373] 00 <- i8042 (interrupt, 1, 12)
[  955.060084] i8042: [238373] 08 <- i8042 (interrupt, 1, 12)
[  955.061110] i8042: [238373] 00 <- i8042 (interrupt, 1, 12)
[  955.062134] i8042: [238373] 00 <- i8042 (interrupt, 1, 12)
[  955.067134] i8042: [238375] cf <- i8042 (interrupt, 1, 12)
[  955.068158] i8042: [238375] 00 <- i8042 (interrupt, 1, 12)
[  955.070227] i8042: [238375] 00 <- i8042 (interrupt, 1, 12)
[  955.070402] i8042: [238375] 08 <- i8042 (interrupt, 1, 12)
[  955.071425] i8042: [238376] 00 <- i8042 (interrupt, 1, 12)
[  955.072430] i8042: [238376] 00 <- i8042 (interrupt, 1, 12)
[  955.077311] i8042: [238377] 8f <- i8042 (interrupt, 1, 12)
[  955.078365] i8042: [238377] 4b <- i8042 (interrupt, 1, 12)
[  955.079391] i8042: [238378] 3b <- i8042 (interrupt, 1, 12)
[  955.080389] i8042: [238378] 08 <- i8042 (interrupt, 1, 12)
[  955.081391] i8042: [238378] 61 <- i8042 (interrupt, 1, 12)
[  955.082436] i8042: [238378] 00 <- i8042 (interrupt, 1, 12)
[  955.087506] i8042: [238380] cf <- i8042 (interrupt, 1, 12)
[  955.088526] i8042: [238380] 7d <- i8042 (interrupt, 1, 12)
[  955.089556] i8042: [238380] 7c <- i8042 (interrupt, 1, 12)
[  955.090566] i8042: [238380] 7f <- i8042 (interrupt, 1, 12)
[  955.091608] i8042: [238381] 1e <- i8042 (interrupt, 1, 12)
[  955.092636] i8042: [238381] ff <- i8042 (interrupt, 1, 12)
[  955.092640] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.097755] i8042: [238382] 8f <- i8042 (interrupt, 1, 12)
[  955.098742] i8042: [238382] 4b <- i8042 (interrupt, 1, 12)
[  955.099775] i8042: [238383] 3b <- i8042 (interrupt, 1, 12)
[  955.100831] i8042: [238383] 08 <- i8042 (interrupt, 1, 12)
[  955.101858] i8042: [238383] 61 <- i8042 (interrupt, 1, 12)
[  955.102883] i8042: [238383] 00 <- i8042 (interrupt, 1, 12)
[  955.107853] i8042: [238385] cf <- i8042 (interrupt, 1, 12)
[  955.108880] i8042: [238385] 7d <- i8042 (interrupt, 1, 12)
[  955.109906] i8042: [238385] 7c <- i8042 (interrupt, 1, 12)
[  955.110891] i8042: [238385] 7f <- i8042 (interrupt, 1, 12)
[  955.111955] i8042: [238386] 1e <- i8042 (interrupt, 1, 12)
[  955.112981] i8042: [238386] ff <- i8042 (interrupt, 1, 12)
[  955.112988] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.118070] i8042: [238387] 8f <- i8042 (interrupt, 1, 12)
[  955.119094] i8042: [238388] 4b <- i8042 (interrupt, 1, 12)
[  955.120120] i8042: [238388] 3b <- i8042 (interrupt, 1, 12)
[  955.121146] i8042: [238388] 08 <- i8042 (interrupt, 1, 12)
[  955.122172] i8042: [238388] 61 <- i8042 (interrupt, 1, 12)
[  955.123199] i8042: [238389] 00 <- i8042 (interrupt, 1, 12)
[  955.128169] i8042: [238390] cf <- i8042 (interrupt, 1, 12)
[  955.129191] i8042: [238390] 7d <- i8042 (interrupt, 1, 12)
[  955.130218] i8042: [238390] 7c <- i8042 (interrupt, 1, 12)
[  955.131246] i8042: [238391] 7f <- i8042 (interrupt, 1, 12)
[  955.132272] i8042: [238391] 1e <- i8042 (interrupt, 1, 12)
[  955.133295] i8042: [238391] ff <- i8042 (interrupt, 1, 12)
[  955.133301] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.138342] i8042: [238392] 8f <- i8042 (interrupt, 1, 12)
[  955.139411] i8042: [238393] 4b <- i8042 (interrupt, 1, 12)
[  955.140434] i8042: [238393] 3b <- i8042 (interrupt, 1, 12)
[  955.141461] i8042: [238393] 08 <- i8042 (interrupt, 1, 12)
[  955.142484] i8042: [238393] 61 <- i8042 (interrupt, 1, 12)
[  955.143545] i8042: [238394] 00 <- i8042 (interrupt, 1, 12)
[  955.148548] i8042: [238395] cf <- i8042 (interrupt, 1, 12)
[  955.149588] i8042: [238395] 7d <- i8042 (interrupt, 1, 12)
[  955.150613] i8042: [238395] 7c <- i8042 (interrupt, 1, 12)
[  955.151640] i8042: [238396] 7f <- i8042 (interrupt, 1, 12)
[  955.152660] i8042: [238396] 1e <- i8042 (interrupt, 1, 12)
[  955.153765] i8042: [238396] ff <- i8042 (interrupt, 1, 12)
[  955.153773] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.158721] i8042: [238397] 8f <- i8042 (interrupt, 1, 12)
[  955.159725] i8042: [238398] 4b <- i8042 (interrupt, 1, 12)
[  955.160718] i8042: [238398] 3b <- i8042 (interrupt, 1, 12)
[  955.161795] i8042: [238398] 08 <- i8042 (interrupt, 1, 12)
[  955.162823] i8042: [238398] 61 <- i8042 (interrupt, 1, 12)
[  955.163927] i8042: [238399] 00 <- i8042 (interrupt, 1, 12)
[  955.168941] i8042: [238400] cf <- i8042 (interrupt, 1, 12)
[  955.169967] i8042: [238400] 7d <- i8042 (interrupt, 1, 12)
[  955.170993] i8042: [238401] 7c <- i8042 (interrupt, 1, 12)
[  955.172019] i8042: [238401] 7f <- i8042 (interrupt, 1, 12)
[  955.173043] i8042: [238401] 1e <- i8042 (interrupt, 1, 12)
[  955.174148] i8042: [238401] ff <- i8042 (interrupt, 1, 12)
[  955.174154] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.179070] i8042: [238403] 8f <- i8042 (interrupt, 1, 12)
[  955.180093] i8042: [238403] 4b <- i8042 (interrupt, 1, 12)
[  955.181120] i8042: [238403] 3b <- i8042 (interrupt, 1, 12)
[  955.182146] i8042: [238403] 08 <- i8042 (interrupt, 1, 12)
[  955.183172] i8042: [238404] 61 <- i8042 (interrupt, 1, 12)
[  955.184276] i8042: [238404] 00 <- i8042 (interrupt, 1, 12)
[  955.189225] i8042: [238405] cf <- i8042 (interrupt, 1, 12)
[  955.190250] i8042: [238405] 7d <- i8042 (interrupt, 1, 12)
[  955.191277] i8042: [238406] 7c <- i8042 (interrupt, 1, 12)
[  955.192304] i8042: [238406] 7f <- i8042 (interrupt, 1, 12)
[  955.193401] i8042: [238406] 1e <- i8042 (interrupt, 1, 12)
[  955.194309] i8042: [238406] ff <- i8042 (interrupt, 1, 12)
[  955.194315] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.199467] i8042: [238408] 8f <- i8042 (interrupt, 1, 12)
[  955.200493] i8042: [238408] 4b <- i8042 (interrupt, 1, 12)
[  955.201518] i8042: [238408] 3b <- i8042 (interrupt, 1, 12)
[  955.202546] i8042: [238408] 08 <- i8042 (interrupt, 1, 12)
[  955.203655] i8042: [238409] 61 <- i8042 (interrupt, 1, 12)
[  955.204563] i8042: [238409] 00 <- i8042 (interrupt, 1, 12)
[  955.209547] i8042: [238410] cf <- i8042 (interrupt, 1, 12)
[  955.210627] i8042: [238410] 7c <- i8042 (interrupt, 1, 12)
[  955.211618] i8042: [238411] 7c <- i8042 (interrupt, 1, 12)
[  955.212647] i8042: [238411] 7f <- i8042 (interrupt, 1, 12)
[  955.213754] i8042: [238411] 1e <- i8042 (interrupt, 1, 12)
[  955.214663] i8042: [238411] ff <- i8042 (interrupt, 1, 12)
[  955.214679] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.219736] i8042: [238413] 8f <- i8042 (interrupt, 1, 12)
[  955.220767] i8042: [238413] 4b <- i8042 (interrupt, 1, 12)
[  955.221734] i8042: [238413] 3b <- i8042 (interrupt, 1, 12)
[  955.222817] i8042: [238413] 08 <- i8042 (interrupt, 1, 12)
[  955.223927] i8042: [238414] 61 <- i8042 (interrupt, 1, 12)
[  955.224832] i8042: [238414] 00 <- i8042 (interrupt, 1, 12)
[  955.229991] i8042: [238415] cf <- i8042 (interrupt, 1, 12)
[  955.231032] i8042: [238416] 7c <- i8042 (interrupt, 1, 12)
[  955.232028] i8042: [238416] 7c <- i8042 (interrupt, 1, 12)
[  955.233056] i8042: [238416] 7f <- i8042 (interrupt, 1, 12)
[  955.234138] i8042: [238416] 1e <- i8042 (interrupt, 1, 12)
[  955.235075] i8042: [238417] ff <- i8042 (interrupt, 1, 12)
[  955.235081] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.240096] i8042: [238418] 8f <- i8042 (interrupt, 1, 12)
[  955.241119] i8042: [238418] 4b <- i8042 (interrupt, 1, 12)
[  955.242147] i8042: [238418] 3b <- i8042 (interrupt, 1, 12)
[  955.243224] i8042: [238419] 08 <- i8042 (interrupt, 1, 12)
[  955.244153] i8042: [238419] 61 <- i8042 (interrupt, 1, 12)
[  955.245180] i8042: [238419] 00 <- i8042 (interrupt, 1, 12)
[  955.250335] i8042: [238420] cf <- i8042 (interrupt, 1, 12)
[  955.251363] i8042: [238421] 74 <- i8042 (interrupt, 1, 12)
[  955.252389] i8042: [238421] 7c <- i8042 (interrupt, 1, 12)
[  955.253496] i8042: [238421] 7f <- i8042 (interrupt, 1, 12)
[  955.254405] i8042: [238421] 1e <- i8042 (interrupt, 1, 12)
[  955.255433] i8042: [238422] ff <- i8042 (interrupt, 1, 12)
[  955.255439] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.260467] i8042: [238423] cf <- i8042 (interrupt, 1, 12)
[  955.261493] i8042: [238423] 00 <- i8042 (interrupt, 1, 12)
[  955.262520] i8042: [238423] 00 <- i8042 (interrupt, 1, 12)
[  955.263632] i8042: [238424] 08 <- i8042 (interrupt, 1, 12)
[  955.264521] i8042: [238424] 00 <- i8042 (interrupt, 1, 12)
[  955.265880] i8042: [238424] 00 <- i8042 (interrupt, 1, 12)
[  955.270683] i8042: [238425] 8f <- i8042 (interrupt, 1, 12)
[  955.271709] i8042: [238426] 4b <- i8042 (interrupt, 1, 12)
[  955.272734] i8042: [238426] 3b <- i8042 (interrupt, 1, 12)
[  955.273841] i8042: [238426] 08 <- i8042 (interrupt, 1, 12)
[  955.274721] i8042: [238426] 61 <- i8042 (interrupt, 1, 12)
[  955.275775] i8042: [238427] 00 <- i8042 (interrupt, 1, 12)
[  955.280815] i8042: [238428] cf <- i8042 (interrupt, 1, 12)
[  955.281842] i8042: [238428] 7c <- i8042 (interrupt, 1, 12)
[  955.282869] i8042: [238428] 7c <- i8042 (interrupt, 1, 12)
[  955.283976] i8042: [238429] 7f <- i8042 (interrupt, 1, 12)
[  955.284884] i8042: [238429] 16 <- i8042 (interrupt, 1, 12)
[  955.285911] i8042: [238429] ff <- i8042 (interrupt, 1, 12)
[  955.285917] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.290952] i8042: [238430] 8f <- i8042 (interrupt, 1, 12)
[  955.291977] i8042: [238431] 4b <- i8042 (interrupt, 1, 12)
[  955.293076] i8042: [238431] 3b <- i8042 (interrupt, 1, 12)
[  955.293986] i8042: [238431] 08 <- i8042 (interrupt, 1, 12)
[  955.295012] i8042: [238431] 61 <- i8042 (interrupt, 1, 12)
[  955.296040] i8042: [238432] 00 <- i8042 (interrupt, 1, 12)
[  955.301200] i8042: [238433] cf <- i8042 (interrupt, 1, 12)
[  955.302226] i8042: [238433] 7c <- i8042 (interrupt, 1, 12)
[  955.303306] i8042: [238434] 7c <- i8042 (interrupt, 1, 12)
[  955.304243] i8042: [238434] 7f <- i8042 (interrupt, 1, 12)
[  955.305269] i8042: [238434] 16 <- i8042 (interrupt, 1, 12)
[  955.306295] i8042: [238434] ff <- i8042 (interrupt, 1, 12)
[  955.306301] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.311319] i8042: [238436] 8f <- i8042 (interrupt, 1, 12)
[  955.312332] i8042: [238436] 4b <- i8042 (interrupt, 1, 12)
[  955.313492] i8042: [238436] 3b <- i8042 (interrupt, 1, 12)
[  955.314401] i8042: [238436] 08 <- i8042 (interrupt, 1, 12)
[  955.315428] i8042: [238437] 61 <- i8042 (interrupt, 1, 12)
[  955.316455] i8042: [238437] 00 <- i8042 (interrupt, 1, 12)
[  955.321495] i8042: [238438] cf <- i8042 (interrupt, 1, 12)
[  955.322521] i8042: [238438] 7c <- i8042 (interrupt, 1, 12)
[  955.323629] i8042: [238439] 7c <- i8042 (interrupt, 1, 12)
[  955.324536] i8042: [238439] 7f <- i8042 (interrupt, 1, 12)
[  955.325563] i8042: [238439] 16 <- i8042 (interrupt, 1, 12)
[  955.326569] i8042: [238439] ff <- i8042 (interrupt, 1, 12)
[  955.326575] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.331728] i8042: [238441] 8f <- i8042 (interrupt, 1, 12)
[  955.332754] i8042: [238441] 4b <- i8042 (interrupt, 1, 12)
[  955.333862] i8042: [238441] 3b <- i8042 (interrupt, 1, 12)
[  955.334770] i8042: [238441] 08 <- i8042 (interrupt, 1, 12)
[  955.335798] i8042: [238442] 61 <- i8042 (interrupt, 1, 12)
[  955.336823] i8042: [238442] 00 <- i8042 (interrupt, 1, 12)
[  955.341863] i8042: [238443] cf <- i8042 (interrupt, 1, 12)
[  955.342969] i8042: [238443] 00 <- i8042 (interrupt, 1, 12)
[  955.343875] i8042: [238444] 00 <- i8042 (interrupt, 1, 12)
[  955.344903] i8042: [238444] 08 <- i8042 (interrupt, 1, 12)
[  955.345930] i8042: [238444] 00 <- i8042 (interrupt, 1, 12)
[  955.346957] i8042: [238444] 00 <- i8042 (interrupt, 1, 12)
[  955.351996] i8042: [238446] 8f <- i8042 (interrupt, 1, 12)
[  955.353101] i8042: [238446] 4b <- i8042 (interrupt, 1, 12)
[  955.354009] i8042: [238446] 3b <- i8042 (interrupt, 1, 12)
[  955.355035] i8042: [238446] 08 <- i8042 (interrupt, 1, 12)
[  955.356063] i8042: [238447] 61 <- i8042 (interrupt, 1, 12)
[  955.357088] i8042: [238447] 00 <- i8042 (interrupt, 1, 12)
[  955.362246] i8042: [238448] cf <- i8042 (interrupt, 1, 12)
[  955.363676] i8042: [238449] 00 <- i8042 (interrupt, 1, 12)
[  955.364701] i8042: [238449] 70 <- i8042 (interrupt, 1, 12)
[  955.365730] i8042: [238449] 7f <- i8042 (interrupt, 1, 12)
[  955.366755] i8042: [238449] 06 <- i8042 (interrupt, 1, 12)
[  955.367783] i8042: [238450] ff <- i8042 (interrupt, 1, 12)
[  955.367790] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.372347] i8042: [238451] 8f <- i8042 (interrupt, 1, 12)
[  955.373454] i8042: [238451] 4b <- i8042 (interrupt, 1, 12)
[  955.374365] i8042: [238451] 3b <- i8042 (interrupt, 1, 12)
[  955.375391] i8042: [238452] 08 <- i8042 (interrupt, 1, 12)
[  955.376416] i8042: [238452] 61 <- i8042 (interrupt, 1, 12)
[  955.377442] i8042: [238452] 00 <- i8042 (interrupt, 1, 12)
[  955.382604] i8042: [238453] cf <- i8042 (interrupt, 1, 12)
[  955.383651] i8042: [238454] 00 <- i8042 (interrupt, 1, 12)
[  955.384617] i8042: [238454] 78 <- i8042 (interrupt, 1, 12)
[  955.385642] i8042: [238454] 7f <- i8042 (interrupt, 1, 12)
[  955.386669] i8042: [238454] 06 <- i8042 (interrupt, 1, 12)
[  955.387698] i8042: [238455] ff <- i8042 (interrupt, 1, 12)
[  955.387704] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.392809] i8042: [238456] 8f <- i8042 (interrupt, 1, 12)
[  955.393715] i8042: [238456] 4b <- i8042 (interrupt, 1, 12)
[  955.394724] i8042: [238456] 3b <- i8042 (interrupt, 1, 12)
[  955.395769] i8042: [238457] 08 <- i8042 (interrupt, 1, 12)
[  955.396794] i8042: [238457] 61 <- i8042 (interrupt, 1, 12)
[  955.397821] i8042: [238457] 00 <- i8042 (interrupt, 1, 12)
[  955.402899] i8042: [238458] cf <- i8042 (interrupt, 1, 12)
[  955.403964] i8042: [238459] 00 <- i8042 (interrupt, 1, 12)
[  955.404989] i8042: [238459] 70 <- i8042 (interrupt, 1, 12)
[  955.406016] i8042: [238459] 7f <- i8042 (interrupt, 1, 12)
[  955.407042] i8042: [238459] 06 <- i8042 (interrupt, 1, 12)
[  955.408072] i8042: [238460] ff <- i8042 (interrupt, 1, 12)
[  955.408079] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.413174] i8042: [238461] 8f <- i8042 (interrupt, 1, 12)
[  955.414199] i8042: [238461] 4b <- i8042 (interrupt, 1, 12)
[  955.415227] i8042: [238462] 3b <- i8042 (interrupt, 1, 12)
[  955.416228] i8042: [238462] 08 <- i8042 (interrupt, 1, 12)
[  955.417279] i8042: [238462] 61 <- i8042 (interrupt, 1, 12)
[  955.418305] i8042: [238462] 00 <- i8042 (interrupt, 1, 12)
[  955.423266] i8042: [238464] cf <- i8042 (interrupt, 1, 12)
[  955.424290] i8042: [238464] 00 <- i8042 (interrupt, 1, 12)
[  955.425317] i8042: [238464] 70 <- i8042 (interrupt, 1, 12)
[  955.426343] i8042: [238464] 7f <- i8042 (interrupt, 1, 12)
[  955.427371] i8042: [238465] 06 <- i8042 (interrupt, 1, 12)
[  955.428396] i8042: [238465] ff <- i8042 (interrupt, 1, 12)
[  955.428402] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.433417] i8042: [238466] 8f <- i8042 (interrupt, 1, 12)
[  955.434445] i8042: [238466] 4b <- i8042 (interrupt, 1, 12)
[  955.435474] i8042: [238467] 3b <- i8042 (interrupt, 1, 12)
[  955.436497] i8042: [238467] 08 <- i8042 (interrupt, 1, 12)
[  955.437526] i8042: [238467] 61 <- i8042 (interrupt, 1, 12)
[  955.438551] i8042: [238467] 00 <- i8042 (interrupt, 1, 12)
[  955.443629] i8042: [238469] cf <- i8042 (interrupt, 1, 12)
[  955.444657] i8042: [238469] 00 <- i8042 (interrupt, 1, 12)
[  955.445684] i8042: [238469] 70 <- i8042 (interrupt, 1, 12)
[  955.446711] i8042: [238469] 7f <- i8042 (interrupt, 1, 12)
[  955.447738] i8042: [238470] 00 <- i8042 (interrupt, 1, 12)
[  955.448762] i8042: [238470] ff <- i8042 (interrupt, 1, 12)
[  955.448768] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.453721] i8042: [238471] 8f <- i8042 (interrupt, 1, 12)
[  955.454747] i8042: [238471] 4b <- i8042 (interrupt, 1, 12)
[  955.455773] i8042: [238472] 3b <- i8042 (interrupt, 1, 12)
[  955.456801] i8042: [238472] 08 <- i8042 (interrupt, 1, 12)
[  955.457828] i8042: [238472] 61 <- i8042 (interrupt, 1, 12)
[  955.458855] i8042: [238472] 00 <- i8042 (interrupt, 1, 12)
[  955.463927] i8042: [238474] cf <- i8042 (interrupt, 1, 12)
[  955.464951] i8042: [238474] 00 <- i8042 (interrupt, 1, 12)
[  955.465977] i8042: [238474] 70 <- i8042 (interrupt, 1, 12)
[  955.467007] i8042: [238474] 7f <- i8042 (interrupt, 1, 12)
[  955.468035] i8042: [238475] 00 <- i8042 (interrupt, 1, 12)
[  955.469061] i8042: [238475] ff <- i8042 (interrupt, 1, 12)
[  955.469067] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.474098] i8042: [238476] 8f <- i8042 (interrupt, 1, 12)
[  955.475135] i8042: [238476] 4b <- i8042 (interrupt, 1, 12)
[  955.476189] i8042: [238477] 3b <- i8042 (interrupt, 1, 12)
[  955.477214] i8042: [238477] 08 <- i8042 (interrupt, 1, 12)
[  955.478242] i8042: [238477] 61 <- i8042 (interrupt, 1, 12)
[  955.479272] i8042: [238478] 00 <- i8042 (interrupt, 1, 12)
[  955.484298] i8042: [238479] cf <- i8042 (interrupt, 1, 12)
[  955.485321] i8042: [238479] 00 <- i8042 (interrupt, 1, 12)
[  955.486347] i8042: [238479] 70 <- i8042 (interrupt, 1, 12)
[  955.487374] i8042: [238480] 7f <- i8042 (interrupt, 1, 12)
[  955.488400] i8042: [238480] 00 <- i8042 (interrupt, 1, 12)
[  955.489410] i8042: [238480] ff <- i8042 (interrupt, 1, 12)
[  955.489426] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.494433] i8042: [238481] cf <- i8042 (interrupt, 1, 12)
[  955.495462] i8042: [238482] 00 <- i8042 (interrupt, 1, 12)
[  955.496487] i8042: [238482] 00 <- i8042 (interrupt, 1, 12)
[  955.497516] i8042: [238482] 08 <- i8042 (interrupt, 1, 12)
[  955.498540] i8042: [238482] 00 <- i8042 (interrupt, 1, 12)
[  955.499568] i8042: [238483] 00 <- i8042 (interrupt, 1, 12)
[  955.504658] i8042: [238484] cf <- i8042 (interrupt, 1, 12)
[  955.505658] i8042: [238484] 00 <- i8042 (interrupt, 1, 12)
[  955.506672] i8042: [238484] 00 <- i8042 (interrupt, 1, 12)
[  955.507737] i8042: [238485] 08 <- i8042 (interrupt, 1, 12)
[  955.508711] i8042: [238485] 00 <- i8042 (interrupt, 1, 12)
[  955.509791] i8042: [238485] 00 <- i8042 (interrupt, 1, 12)
[  955.514765] i8042: [238486] cf <- i8042 (interrupt, 1, 12)
[  955.515789] i8042: [238487] 00 <- i8042 (interrupt, 1, 12)
[  955.516817] i8042: [238487] 00 <- i8042 (interrupt, 1, 12)
[  955.517843] i8042: [238487] 08 <- i8042 (interrupt, 1, 12)
[  955.518871] i8042: [238487] 00 <- i8042 (interrupt, 1, 12)
[  955.519897] i8042: [238488] 00 <- i8042 (interrupt, 1, 12)
[  955.524989] i8042: [238489] cf <- i8042 (interrupt, 1, 12)
[  955.526016] i8042: [238489] 00 <- i8042 (interrupt, 1, 12)
[  955.527042] i8042: [238489] 00 <- i8042 (interrupt, 1, 12)
[  955.528070] i8042: [238490] 08 <- i8042 (interrupt, 1, 12)
[  955.529095] i8042: [238490] 00 <- i8042 (interrupt, 1, 12)
[  955.530121] i8042: [238490] 00 <- i8042 (interrupt, 1, 12)
[  955.535156] i8042: [238491] cf <- i8042 (interrupt, 1, 12)
[  955.536165] i8042: [238492] 00 <- i8042 (interrupt, 1, 12)
[  955.537247] i8042: [238492] 00 <- i8042 (interrupt, 1, 12)
[  955.538288] i8042: [238492] 08 <- i8042 (interrupt, 1, 12)
[  955.539285] i8042: [238493] 00 <- i8042 (interrupt, 1, 12)
[  955.540309] i8042: [238493] 00 <- i8042 (interrupt, 1, 12)
[  955.545251] i8042: [238494] cf <- i8042 (interrupt, 1, 12)
[  955.546276] i8042: [238494] 00 <- i8042 (interrupt, 1, 12)
[  955.547303] i8042: [238495] 00 <- i8042 (interrupt, 1, 12)
[  955.548328] i8042: [238495] 08 <- i8042 (interrupt, 1, 12)
[  955.549355] i8042: [238495] 00 <- i8042 (interrupt, 1, 12)
[  955.550381] i8042: [238495] 00 <- i8042 (interrupt, 1, 12)
[  955.555545] i8042: [238497] cf <- i8042 (interrupt, 1, 12)
[  955.556569] i8042: [238497] 00 <- i8042 (interrupt, 1, 12)
[  955.557594] i8042: [238497] 00 <- i8042 (interrupt, 1, 12)
[  955.558977] i8042: [238497] 08 <- i8042 (interrupt, 1, 12)
[  955.559989] i8042: [238498] 00 <- i8042 (interrupt, 1, 12)
[  955.561053] i8042: [238498] 00 <- i8042 (interrupt, 1, 12)
[  955.565652] i8042: [238499] cf <- i8042 (interrupt, 1, 12)
[  955.566676] i8042: [238499] 00 <- i8042 (interrupt, 1, 12)
[  955.567701] i8042: [238500] 00 <- i8042 (interrupt, 1, 12)
[  955.568727] i8042: [238500] 08 <- i8042 (interrupt, 1, 12)
[  955.569752] i8042: [238500] 00 <- i8042 (interrupt, 1, 12)
[  955.570776] i8042: [238500] 00 <- i8042 (interrupt, 1, 12)
[  955.575866] i8042: [238502] cf <- i8042 (interrupt, 1, 12)
[  955.576891] i8042: [238502] 00 <- i8042 (interrupt, 1, 12)
[  955.577917] i8042: [238502] 00 <- i8042 (interrupt, 1, 12)
[  955.578941] i8042: [238502] 08 <- i8042 (interrupt, 1, 12)
[  955.579969] i8042: [238503] 00 <- i8042 (interrupt, 1, 12)
[  955.580993] i8042: [238503] 00 <- i8042 (interrupt, 1, 12)
[  955.586066] i8042: [238504] cf <- i8042 (interrupt, 1, 12)
[  955.587093] i8042: [238504] 00 <- i8042 (interrupt, 1, 12)
[  955.588121] i8042: [238505] 00 <- i8042 (interrupt, 1, 12)
[  955.589146] i8042: [238505] 08 <- i8042 (interrupt, 1, 12)
[  955.590172] i8042: [238505] 00 <- i8042 (interrupt, 1, 12)
[  955.591279] i8042: [238506] 00 <- i8042 (interrupt, 1, 12)
[  955.596201] i8042: [238507] cf <- i8042 (interrupt, 1, 12)
[  955.597224] i8042: [238507] 00 <- i8042 (interrupt, 1, 12)
[  955.598250] i8042: [238507] 00 <- i8042 (interrupt, 1, 12)
[  955.599277] i8042: [238508] 08 <- i8042 (interrupt, 1, 12)
[  955.600304] i8042: [238508] 00 <- i8042 (interrupt, 1, 12)
[  955.601406] i8042: [238508] 00 <- i8042 (interrupt, 1, 12)
[  955.606329] i8042: [238509] cf <- i8042 (interrupt, 1, 12)
[  955.607356] i8042: [238510] 00 <- i8042 (interrupt, 1, 12)
[  955.608381] i8042: [238510] 00 <- i8042 (interrupt, 1, 12)
[  955.609406] i8042: [238510] 08 <- i8042 (interrupt, 1, 12)
[  955.610432] i8042: [238510] 00 <- i8042 (interrupt, 1, 12)
[  955.611504] i8042: [238511] 00 <- i8042 (interrupt, 1, 12)
[  955.616541] i8042: [238512] cf <- i8042 (interrupt, 1, 12)
[  955.617567] i8042: [238512] 00 <- i8042 (interrupt, 1, 12)
[  955.618592] i8042: [238512] 00 <- i8042 (interrupt, 1, 12)
[  955.619618] i8042: [238513] 08 <- i8042 (interrupt, 1, 12)
[  955.620644] i8042: [238513] 00 <- i8042 (interrupt, 1, 12)
[  955.621780] i8042: [238513] 00 <- i8042 (interrupt, 1, 12)
[  955.626660] i8042: [238514] cf <- i8042 (interrupt, 1, 12)
[  955.627726] i8042: [238515] 00 <- i8042 (interrupt, 1, 12)
[  955.628749] i8042: [238515] 00 <- i8042 (interrupt, 1, 12)
[  955.629775] i8042: [238515] 08 <- i8042 (interrupt, 1, 12)
[  955.630801] i8042: [238515] 00 <- i8042 (interrupt, 1, 12)
[  955.631905] i8042: [238516] 00 <- i8042 (interrupt, 1, 12)
[  955.636939] i8042: [238517] cf <- i8042 (interrupt, 1, 12)
[  955.637965] i8042: [238517] 00 <- i8042 (interrupt, 1, 12)
[  955.638990] i8042: [238517] 00 <- i8042 (interrupt, 1, 12)
[  955.640016] i8042: [238518] 08 <- i8042 (interrupt, 1, 12)
[  955.641120] i8042: [238518] 00 <- i8042 (interrupt, 1, 12)
[  955.642028] i8042: [238518] 00 <- i8042 (interrupt, 1, 12)
[  955.647066] i8042: [238519] cf <- i8042 (interrupt, 1, 12)
[  955.648093] i8042: [238520] 00 <- i8042 (interrupt, 1, 12)
[  955.649116] i8042: [238520] 00 <- i8042 (interrupt, 1, 12)
[  955.650142] i8042: [238520] 08 <- i8042 (interrupt, 1, 12)
[  955.651249] i8042: [238520] 00 <- i8042 (interrupt, 1, 12)
[  955.652130] i8042: [238521] 00 <- i8042 (interrupt, 1, 12)
[  955.657176] i8042: [238522] cf <- i8042 (interrupt, 1, 12)
[  955.658204] i8042: [238522] 00 <- i8042 (interrupt, 1, 12)
[  955.659229] i8042: [238522] 00 <- i8042 (interrupt, 1, 12)
[  955.660255] i8042: [238523] 08 <- i8042 (interrupt, 1, 12)
[  955.661361] i8042: [238523] 00 <- i8042 (interrupt, 1, 12)
[  955.662269] i8042: [238523] 00 <- i8042 (interrupt, 1, 12)
[  955.667428] i8042: [238525] cf <- i8042 (interrupt, 1, 12)
[  955.668451] i8042: [238525] 00 <- i8042 (interrupt, 1, 12)
[  955.669477] i8042: [238525] 00 <- i8042 (interrupt, 1, 12)
[  955.670504] i8042: [238525] 08 <- i8042 (interrupt, 1, 12)
[  955.671609] i8042: [238526] 00 <- i8042 (interrupt, 1, 12)
[  955.672517] i8042: [238526] 00 <- i8042 (interrupt, 1, 12)
[  955.677628] i8042: [238527] 8f <- i8042 (interrupt, 1, 12)
[  955.678620] i8042: [238527] 00 <- i8042 (interrupt, 1, 12)
[  955.679681] i8042: [238528] 00 <- i8042 (interrupt, 1, 12)
[  955.680709] i8042: [238528] 08 <- i8042 (interrupt, 1, 12)
[  955.681816] i8042: [238528] 00 <- i8042 (interrupt, 1, 12)
[  955.682724] i8042: [238528] 00 <- i8042 (interrupt, 1, 12)
[  955.687714] i8042: [238530] 8f <- i8042 (interrupt, 1, 12)
[  955.688789] i8042: [238530] 00 <- i8042 (interrupt, 1, 12)
[  955.689818] i8042: [238530] 00 <- i8042 (interrupt, 1, 12)
[  955.690842] i8042: [238530] 08 <- i8042 (interrupt, 1, 12)
[  955.691952] i8042: [238531] 00 <- i8042 (interrupt, 1, 12)
[  955.692861] i8042: [238531] 00 <- i8042 (interrupt, 1, 12)
[  955.697901] i8042: [238532] 8f <- i8042 (interrupt, 1, 12)
[  955.698928] i8042: [238532] 00 <- i8042 (interrupt, 1, 12)
[  955.699955] i8042: [238533] 00 <- i8042 (interrupt, 1, 12)
[  955.700980] i8042: [238533] 08 <- i8042 (interrupt, 1, 12)
[  955.702087] i8042: [238533] 00 <- i8042 (interrupt, 1, 12)
[  955.702997] i8042: [238533] 00 <- i8042 (interrupt, 1, 12)
[  955.708009] i8042: [238535] 8f <- i8042 (interrupt, 1, 12)
[  955.709061] i8042: [238535] 00 <- i8042 (interrupt, 1, 12)
[  955.710089] i8042: [238535] 00 <- i8042 (interrupt, 1, 12)
[  955.711087] i8042: [238535] 08 <- i8042 (interrupt, 1, 12)
[  955.712223] i8042: [238536] 00 <- i8042 (interrupt, 1, 12)
[  955.713132] i8042: [238536] 00 <- i8042 (interrupt, 1, 12)
[  955.718289] i8042: [238537] 8f <- i8042 (interrupt, 1, 12)
[  955.719317] i8042: [238538] 00 <- i8042 (interrupt, 1, 12)
[  955.720343] i8042: [238538] 00 <- i8042 (interrupt, 1, 12)
[  955.721369] i8042: [238538] 08 <- i8042 (interrupt, 1, 12)
[  955.722473] i8042: [238538] 00 <- i8042 (interrupt, 1, 12)
[  955.723353] i8042: [238539] 00 <- i8042 (interrupt, 1, 12)
[  955.728424] i8042: [238540] 8f <- i8042 (interrupt, 1, 12)
[  955.729448] i8042: [238540] 00 <- i8042 (interrupt, 1, 12)
[  955.730475] i8042: [238540] 00 <- i8042 (interrupt, 1, 12)
[  955.731502] i8042: [238541] 08 <- i8042 (interrupt, 1, 12)
[  955.732608] i8042: [238541] 00 <- i8042 (interrupt, 1, 12)
[  955.733515] i8042: [238541] 00 <- i8042 (interrupt, 1, 12)
[  955.738552] i8042: [238542] 8f <- i8042 (interrupt, 1, 12)
[  955.739582] i8042: [238543] 00 <- i8042 (interrupt, 1, 12)
[  955.740606] i8042: [238543] 00 <- i8042 (interrupt, 1, 12)
[  955.741681] i8042: [238543] 08 <- i8042 (interrupt, 1, 12)
[  955.742620] i8042: [238543] 00 <- i8042 (interrupt, 1, 12)
[  955.743647] i8042: [238544] 00 <- i8042 (interrupt, 1, 12)
[  955.748803] i8042: [238545] 8f <- i8042 (interrupt, 1, 12)
[  955.749830] i8042: [238545] 00 <- i8042 (interrupt, 1, 12)
[  955.750856] i8042: [238545] 00 <- i8042 (interrupt, 1, 12)
[  955.751964] i8042: [238546] 08 <- i8042 (interrupt, 1, 12)
[  955.752872] i8042: [238546] 00 <- i8042 (interrupt, 1, 12)
[  955.754334] i8042: [238546] 00 <- i8042 (interrupt, 1, 12)
[  955.759001] i8042: [238547] 8f <- i8042 (interrupt, 1, 12)
[  955.759970] i8042: [238548] 00 <- i8042 (interrupt, 1, 12)
[  955.761125] i8042: [238548] 00 <- i8042 (interrupt, 1, 12)
[  955.762032] i8042: [238548] 08 <- i8042 (interrupt, 1, 12)
[  955.763059] i8042: [238548] 00 <- i8042 (interrupt, 1, 12)
[  955.764086] i8042: [238549] 00 <- i8042 (interrupt, 1, 12)
[  955.769125] i8042: [238550] 8f <- i8042 (interrupt, 1, 12)
[  955.770133] i8042: [238550] 00 <- i8042 (interrupt, 1, 12)
[  955.771239] i8042: [238550] 00 <- i8042 (interrupt, 1, 12)
[  955.772149] i8042: [238551] 08 <- i8042 (interrupt, 1, 12)
[  955.773174] i8042: [238551] 00 <- i8042 (interrupt, 1, 12)
[  955.774201] i8042: [238551] 00 <- i8042 (interrupt, 1, 12)
[  955.779336] i8042: [238552] 8f <- i8042 (interrupt, 1, 12)
[  955.780364] i8042: [238553] 00 <- i8042 (interrupt, 1, 12)
[  955.781470] i8042: [238553] 00 <- i8042 (interrupt, 1, 12)
[  955.782379] i8042: [238553] 08 <- i8042 (interrupt, 1, 12)
[  955.783405] i8042: [238554] 00 <- i8042 (interrupt, 1, 12)
[  955.784433] i8042: [238554] 00 <- i8042 (interrupt, 1, 12)
[  955.789470] i8042: [238555] 8f <- i8042 (interrupt, 1, 12)
[  955.790467] i8042: [238555] 00 <- i8042 (interrupt, 1, 12)
[  955.791559] i8042: [238556] 00 <- i8042 (interrupt, 1, 12)
[  955.792510] i8042: [238556] 08 <- i8042 (interrupt, 1, 12)
[  955.793538] i8042: [238556] 00 <- i8042 (interrupt, 1, 12)
[  955.794565] i8042: [238556] 00 <- i8042 (interrupt, 1, 12)
[  955.911661] i8042: [238586] 8f <- i8042 (interrupt, 1, 12)
[  955.912594] i8042: [238586] 4b <- i8042 (interrupt, 1, 12)
[  955.913620] i8042: [238586] 3b <- i8042 (interrupt, 1, 12)
[  955.914645] i8042: [238586] 08 <- i8042 (interrupt, 1, 12)
[  955.915673] i8042: [238587] 61 <- i8042 (interrupt, 1, 12)
[  955.916701] i8042: [238587] 00 <- i8042 (interrupt, 1, 12)
[  955.921846] i8042: [238588] cf <- i8042 (interrupt, 1, 12)
[  955.922755] i8042: [238588] 00 <- i8042 (interrupt, 1, 12)
[  955.923783] i8042: [238589] 00 <- i8042 (interrupt, 1, 12)
[  955.924809] i8042: [238589] 08 <- i8042 (interrupt, 1, 12)
[  955.925834] i8042: [238589] 00 <- i8042 (interrupt, 1, 12)
[  955.926860] i8042: [238589] 00 <- i8042 (interrupt, 1, 12)
[  955.931982] i8042: [238591] cf <- i8042 (interrupt, 1, 12)
[  955.933010] i8042: [238591] 00 <- i8042 (interrupt, 1, 12)
[  955.934035] i8042: [238591] 00 <- i8042 (interrupt, 1, 12)
[  955.935062] i8042: [238591] 08 <- i8042 (interrupt, 1, 12)
[  955.936089] i8042: [238592] 00 <- i8042 (interrupt, 1, 12)
[  955.937115] i8042: [238592] 00 <- i8042 (interrupt, 1, 12)
[  955.942071] i8042: [238593] 8f <- i8042 (interrupt, 1, 12)
[  955.943100] i8042: [238593] 4b <- i8042 (interrupt, 1, 12)
[  955.944126] i8042: [238594] 3b <- i8042 (interrupt, 1, 12)
[  955.945154] i8042: [238594] 08 <- i8042 (interrupt, 1, 12)
[  955.946180] i8042: [238594] 61 <- i8042 (interrupt, 1, 12)
[  955.947206] i8042: [238594] 00 <- i8042 (interrupt, 1, 12)
[  955.952263] i8042: [238596] cf <- i8042 (interrupt, 1, 12)
[  955.953288] i8042: [238596] 00 <- i8042 (interrupt, 1, 12)
[  955.954314] i8042: [238596] 70 <- i8042 (interrupt, 1, 12)
[  955.955302] i8042: [238596] 7f <- i8042 (interrupt, 1, 12)
[  955.956366] i8042: [238597] 00 <- i8042 (interrupt, 1, 12)
[  955.957395] i8042: [238597] ff <- i8042 (interrupt, 1, 12)
[  955.957401] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.962469] i8042: [238598] cf <- i8042 (interrupt, 1, 12)
[  955.963498] i8042: [238599] 00 <- i8042 (interrupt, 1, 12)
[  955.964522] i8042: [238599] 00 <- i8042 (interrupt, 1, 12)
[  955.965551] i8042: [238599] 08 <- i8042 (interrupt, 1, 12)
[  955.966578] i8042: [238599] 00 <- i8042 (interrupt, 1, 12)
[  955.967605] i8042: [238600] 00 <- i8042 (interrupt, 1, 12)
[  955.972564] i8042: [238601] 8f <- i8042 (interrupt, 1, 12)
[  955.973591] i8042: [238601] 4b <- i8042 (interrupt, 1, 12)
[  955.974619] i8042: [238601] 3b <- i8042 (interrupt, 1, 12)
[  955.975646] i8042: [238602] 08 <- i8042 (interrupt, 1, 12)
[  955.976671] i8042: [238602] 61 <- i8042 (interrupt, 1, 12)
[  955.977697] i8042: [238602] 00 <- i8042 (interrupt, 1, 12)
[  955.982778] i8042: [238603] cf <- i8042 (interrupt, 1, 12)
[  955.983804] i8042: [238604] 04 <- i8042 (interrupt, 1, 12)
[  955.984831] i8042: [238604] 7c <- i8042 (interrupt, 1, 12)
[  955.985859] i8042: [238604] 7f <- i8042 (interrupt, 1, 12)
[  955.986862] i8042: [238604] 16 <- i8042 (interrupt, 1, 12)
[  955.987913] i8042: [238605] ff <- i8042 (interrupt, 1, 12)
[  955.987919] psmouse serio1: alps: v3 discard packet[5] = ff
[  955.992889] i8042: [238606] 8f <- i8042 (interrupt, 1, 12)
[  955.993916] i8042: [238606] 4b <- i8042 (interrupt, 1, 12)
[  955.994943] i8042: [238606] 3b <- i8042 (interrupt, 1, 12)
[  955.995972] i8042: [238607] 08 <- i8042 (interrupt, 1, 12)
[  955.996998] i8042: [238607] 61 <- i8042 (interrupt, 1, 12)
[  955.998025] i8042: [238607] 00 <- i8042 (interrupt, 1, 12)
[  956.003122] i8042: [238608] cf <- i8042 (interrupt, 1, 12)
[  956.004147] i8042: [238609] 00 <- i8042 (interrupt, 1, 12)
[  956.005174] i8042: [238609] 00 <- i8042 (interrupt, 1, 12)
[  956.006200] i8042: [238609] 08 <- i8042 (interrupt, 1, 12)
[  956.007229] i8042: [238609] 00 <- i8042 (interrupt, 1, 12)
[  956.008257] i8042: [238610] 00 <- i8042 (interrupt, 1, 12)
[  956.013231] i8042: [238611] 8f <- i8042 (interrupt, 1, 12)
[  956.014257] i8042: [238611] 4b <- i8042 (interrupt, 1, 12)
[  956.015284] i8042: [238611] 3b <- i8042 (interrupt, 1, 12)
[  956.016310] i8042: [238612] 08 <- i8042 (interrupt, 1, 12)
[  956.017342] i8042: [238612] 61 <- i8042 (interrupt, 1, 12)
[  956.018349] i8042: [238612] 00 <- i8042 (interrupt, 1, 12)
[  956.023443] i8042: [238613] cf <- i8042 (interrupt, 1, 12)
[  956.024470] i8042: [238614] 00 <- i8042 (interrupt, 1, 12)
[  956.025497] i8042: [238614] 00 <- i8042 (interrupt, 1, 12)
[  956.026499] i8042: [238614] 08 <- i8042 (interrupt, 1, 12)
[  956.027550] i8042: [238615] 00 <- i8042 (interrupt, 1, 12)
[  956.028575] i8042: [238615] 00 <- i8042 (interrupt, 1, 12)
[  956.033647] i8042: [238616] 8f <- i8042 (interrupt, 1, 12)
[  956.034672] i8042: [238616] 4b <- i8042 (interrupt, 1, 12)
[  956.035700] i8042: [238617] 3b <- i8042 (interrupt, 1, 12)
[  956.036723] i8042: [238617] 08 <- i8042 (interrupt, 1, 12)
[  956.037751] i8042: [238617] 61 <- i8042 (interrupt, 1, 12)
[  956.038775] i8042: [238617] 00 <- i8042 (interrupt, 1, 12)
[  956.043767] i8042: [238619] cf <- i8042 (interrupt, 1, 12)
[  956.044793] i8042: [238619] 7d <- i8042 (interrupt, 1, 12)
[  956.045817] i8042: [238619] 7c <- i8042 (interrupt, 1, 12)
[  956.047520] i8042: [238620] 7f <- i8042 (interrupt, 1, 12)
[  956.048545] i8042: [238620] 1e <- i8042 (interrupt, 1, 12)
[  956.049651] i8042: [238620] 65 <- i8042 (interrupt, 1, 12)
[  956.053983] i8042: [238621] cf <- i8042 (interrupt, 1, 12)
[  956.054990] i8042: [238621] 00 <- i8042 (interrupt, 1, 12)
[  956.056016] i8042: [238622] 00 <- i8042 (interrupt, 1, 12)
[  956.057042] i8042: [238622] 08 <- i8042 (interrupt, 1, 12)
[  956.058067] i8042: [238622] 00 <- i8042 (interrupt, 1, 12)
[  956.059175] i8042: [238622] 00 <- i8042 (interrupt, 1, 12)
[  956.064095] i8042: [238624] af <- i8042 (interrupt, 1, 12)
[  956.065120] i8042: [238624] 53 <- i8042 (interrupt, 1, 12)
[  956.066146] i8042: [238624] 54 <- i8042 (interrupt, 1, 12)
[  956.067170] i8042: [238624] 08 <- i8042 (interrupt, 1, 12)
[  956.068199] i8042: [238625] 6b <- i8042 (interrupt, 1, 12)
[  956.069302] i8042: [238625] 15 <- i8042 (interrupt, 1, 12)
[  956.074343] i8042: [238626] cf <- i8042 (interrupt, 1, 12)
[  956.075368] i8042: [238626] 7f <- i8042 (interrupt, 1, 12)
[  956.076394] i8042: [238627] 7e <- i8042 (interrupt, 1, 12)
[  956.077421] i8042: [238627] 7f <- i8042 (interrupt, 1, 12)
[  956.078446] i8042: [238627] 7e <- i8042 (interrupt, 1, 12)
[  956.079554] i8042: [238628] 66 <- i8042 (interrupt, 1, 12)
[  956.084473] i8042: [238629] af <- i8042 (interrupt, 1, 12)
[  956.085496] i8042: [238629] 53 <- i8042 (interrupt, 1, 12)
[  956.086523] i8042: [238629] 54 <- i8042 (interrupt, 1, 12)
[  956.087551] i8042: [238630] 08 <- i8042 (interrupt, 1, 12)
[  956.088576] i8042: [238630] 6b <- i8042 (interrupt, 1, 12)
[  956.089682] i8042: [238630] 16 <- i8042 (interrupt, 1, 12)
[  956.094600] i8042: [238631] ef <- i8042 (interrupt, 1, 12)
[  956.095626] i8042: [238632] 7f <- i8042 (interrupt, 1, 12)
[  956.096651] i8042: [238632] 7f <- i8042 (interrupt, 1, 12)
[  956.097678] i8042: [238632] 7f <- i8042 (interrupt, 1, 12)
[  956.098703] i8042: [238632] 7e <- i8042 (interrupt, 1, 12)
[  956.099813] i8042: [238633] 77 <- i8042 (interrupt, 1, 12)
[  956.104851] i8042: [238634] bf <- i8042 (interrupt, 1, 12)
[  956.105876] i8042: [238634] 53 <- i8042 (interrupt, 1, 12)
[  956.106903] i8042: [238634] 54 <- i8042 (interrupt, 1, 12)
[  956.107930] i8042: [238635] 08 <- i8042 (interrupt, 1, 12)
[  956.109035] i8042: [238635] 6d <- i8042 (interrupt, 1, 12)
[  956.109897] i8042: [238635] 17 <- i8042 (interrupt, 1, 12)
[  956.114984] i8042: [238636] cf <- i8042 (interrupt, 1, 12)
[  956.116009] i8042: [238637] 7f <- i8042 (interrupt, 1, 12)
[  956.117036] i8042: [238637] 7e <- i8042 (interrupt, 1, 12)
[  956.118061] i8042: [238637] 7f <- i8042 (interrupt, 1, 12)
[  956.119167] i8042: [238637] 7e <- i8042 (interrupt, 1, 12)
[  956.120076] i8042: [238638] 67 <- i8042 (interrupt, 1, 12)
[  956.125054] i8042: [238639] bf <- i8042 (interrupt, 1, 12)
[  956.126078] i8042: [238639] 53 <- i8042 (interrupt, 1, 12)
[  956.127166] i8042: [238639] 54 <- i8042 (interrupt, 1, 12)
[  956.128137] i8042: [238640] 08 <- i8042 (interrupt, 1, 12)
[  956.129262] i8042: [238640] 6c <- i8042 (interrupt, 1, 12)
[  956.130170] i8042: [238640] 17 <- i8042 (interrupt, 1, 12)
[  956.135325] i8042: [238641] ef <- i8042 (interrupt, 1, 12)
[  956.136350] i8042: [238642] 7f <- i8042 (interrupt, 1, 12)
[  956.137376] i8042: [238642] 7f <- i8042 (interrupt, 1, 12)
[  956.138480] i8042: [238642] 7f <- i8042 (interrupt, 1, 12)
[  956.139423] i8042: [238642] 7e <- i8042 (interrupt, 1, 12)
[  956.140449] i8042: [238643] 77 <- i8042 (interrupt, 1, 12)
[  956.145415] i8042: [238644] 8f <- i8042 (interrupt, 1, 12)
[  956.146467] i8042: [238644] 53 <- i8042 (interrupt, 1, 12)
[  956.147515] i8042: [238644] 38 <- i8042 (interrupt, 1, 12)
[  956.148624] i8042: [238645] 08 <- i8042 (interrupt, 1, 12)
[  956.149531] i8042: [238645] 75 <- i8042 (interrupt, 1, 12)
[  956.150559] i8042: [238645] 3e <- i8042 (interrupt, 1, 12)
[  956.155682] i8042: [238647] ef <- i8042 (interrupt, 1, 12)
[  956.156706] i8042: [238647] 7f <- i8042 (interrupt, 1, 12)
[  956.157804] i8042: [238647] 7f <- i8042 (interrupt, 1, 12)
[  956.158712] i8042: [238647] 7f <- i8042 (interrupt, 1, 12)
[  956.159739] i8042: [238648] 7e <- i8042 (interrupt, 1, 12)
[  956.160764] i8042: [238648] 77 <- i8042 (interrupt, 1, 12)
[  956.165867] i8042: [238649] 9f <- i8042 (interrupt, 1, 12)
[  956.166893] i8042: [238649] 6e <- i8042 (interrupt, 1, 12)
[  956.167949] i8042: [238650] 54 <- i8042 (interrupt, 1, 12)
[  956.168884] i8042: [238650] 08 <- i8042 (interrupt, 1, 12)
[  956.169933] i8042: [238650] 7d <- i8042 (interrupt, 1, 12)
[  956.170962] i8042: [238650] 19 <- i8042 (interrupt, 1, 12)
[  956.175973] i8042: [238652] cf <- i8042 (interrupt, 1, 12)
[  956.177024] i8042: [238652] 7f <- i8042 (interrupt, 1, 12)
[  956.178133] i8042: [238652] 7e <- i8042 (interrupt, 1, 12)
[  956.179042] i8042: [238652] 7f <- i8042 (interrupt, 1, 12)
[  956.180068] i8042: [238653] 7e <- i8042 (interrupt, 1, 12)
[  956.181094] i8042: [238653] 66 <- i8042 (interrupt, 1, 12)
[  956.186250] i8042: [238654] 9f <- i8042 (interrupt, 1, 12)
[  956.187355] i8042: [238654] 6e <- i8042 (interrupt, 1, 12)
[  956.188264] i8042: [238655] 54 <- i8042 (interrupt, 1, 12)
[  956.189290] i8042: [238655] 08 <- i8042 (interrupt, 1, 12)
[  956.190316] i8042: [238655] 7d <- i8042 (interrupt, 1, 12)
[  956.191344] i8042: [238655] 00 <- i8042 (interrupt, 1, 12)
[  956.196385] i8042: [238657] ef <- i8042 (interrupt, 1, 12)
[  956.197445] i8042: [238657] 7f <- i8042 (interrupt, 1, 12)
[  956.198380] i8042: [238657] 7f <- i8042 (interrupt, 1, 12)
[  956.199407] i8042: [238657] 7f <- i8042 (interrupt, 1, 12)
[  956.200381] i8042: [238658] 7e <- i8042 (interrupt, 1, 12)
[  956.201418] i8042: [238658] 73 <- i8042 (interrupt, 1, 12)
[  956.206500] i8042: [238659] bf <- i8042 (interrupt, 1, 12)
[  956.207609] i8042: [238660] 53 <- i8042 (interrupt, 1, 12)
[  956.208517] i8042: [238660] 54 <- i8042 (interrupt, 1, 12)
[  956.209542] i8042: [238660] 08 <- i8042 (interrupt, 1, 12)
[  956.210571] i8042: [238660] 6d <- i8042 (interrupt, 1, 12)
[  956.211599] i8042: [238661] 16 <- i8042 (interrupt, 1, 12)
[  956.216755] i8042: [238662] ef <- i8042 (interrupt, 1, 12)
[  956.217859] i8042: [238662] 7f <- i8042 (interrupt, 1, 12)
[  956.218770] i8042: [238662] 7f <- i8042 (interrupt, 1, 12)
[  956.219795] i8042: [238663] 7f <- i8042 (interrupt, 1, 12)
[  956.220822] i8042: [238663] 7e <- i8042 (interrupt, 1, 12)
[  956.221849] i8042: [238663] 77 <- i8042 (interrupt, 1, 12)
[  956.226886] i8042: [238664] bf <- i8042 (interrupt, 1, 12)
[  956.227959] i8042: [238665] 27 <- i8042 (interrupt, 1, 12)
[  956.228866] i8042: [238665] 54 <- i8042 (interrupt, 1, 12)
[  956.229871] i8042: [238665] 08 <- i8042 (interrupt, 1, 12)
[  956.230905] i8042: [238665] 7c <- i8042 (interrupt, 1, 12)
[  956.231980] i8042: [238666] 00 <- i8042 (interrupt, 1, 12)
[  956.237089] i8042: [238667] ef <- i8042 (interrupt, 1, 12)
[  956.237997] i8042: [238667] 7f <- i8042 (interrupt, 1, 12)
[  956.239026] i8042: [238667] 7f <- i8042 (interrupt, 1, 12)
[  956.240055] i8042: [238668] 7f <- i8042 (interrupt, 1, 12)
[  956.241079] i8042: [238668] 7e <- i8042 (interrupt, 1, 12)
[  956.242897] i8042: [238668] 77 <- i8042 (interrupt, 1, 12)
[  956.247267] i8042: [238669] bf <- i8042 (interrupt, 1, 12)
[  956.248293] i8042: [238670] 27 <- i8042 (interrupt, 1, 12)
[  956.249321] i8042: [238670] 54 <- i8042 (interrupt, 1, 12)
[  956.250347] i8042: [238670] 08 <- i8042 (interrupt, 1, 12)
[  956.251374] i8042: [238670] 7c <- i8042 (interrupt, 1, 12)
[  956.252403] i8042: [238671] 00 <- i8042 (interrupt, 1, 12)
[  956.257524] i8042: [238672] cf <- i8042 (interrupt, 1, 12)
[  956.258536] i8042: [238672] 7f <- i8042 (interrupt, 1, 12)
[  956.259518] i8042: [238672] 7c <- i8042 (interrupt, 1, 12)
[  956.260600] i8042: [238673] 7f <- i8042 (interrupt, 1, 12)
[  956.261628] i8042: [238673] 7e <- i8042 (interrupt, 1, 12)
[  956.262654] i8042: [238673] ff <- i8042 (interrupt, 1, 12)
[  956.262660] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.267614] i8042: [238674] cf <- i8042 (interrupt, 1, 12)
[  956.268533] i8042: [238675] 00 <- i8042 (interrupt, 1, 12)
[  956.269590] i8042: [238675] 00 <- i8042 (interrupt, 1, 12)
[  956.270615] i8042: [238675] 08 <- i8042 (interrupt, 1, 12)
[  956.271652] i8042: [238676] 00 <- i8042 (interrupt, 1, 12)
[  956.272652] i8042: [238676] 00 <- i8042 (interrupt, 1, 12)
[  956.277769] i8042: [238677] bf <- i8042 (interrupt, 1, 12)
[  956.278797] i8042: [238677] 27 <- i8042 (interrupt, 1, 12)
[  956.279824] i8042: [238678] 54 <- i8042 (interrupt, 1, 12)
[  956.280851] i8042: [238678] 08 <- i8042 (interrupt, 1, 12)
[  956.281877] i8042: [238678] 7c <- i8042 (interrupt, 1, 12)
[  956.282904] i8042: [238678] 00 <- i8042 (interrupt, 1, 12)
[  956.287874] i8042: [238680] cf <- i8042 (interrupt, 1, 12)
[  956.288885] i8042: [238680] 7f <- i8042 (interrupt, 1, 12)
[  956.289952] i8042: [238680] 7c <- i8042 (interrupt, 1, 12)
[  956.290941] i8042: [238680] 7f <- i8042 (interrupt, 1, 12)
[  956.292016] i8042: [238681] 1e <- i8042 (interrupt, 1, 12)
[  956.293015] i8042: [238681] 64 <- i8042 (interrupt, 1, 12)
[  956.298091] i8042: [238682] af <- i8042 (interrupt, 1, 12)
[  956.299115] i8042: [238682] 53 <- i8042 (interrupt, 1, 12)
[  956.300141] i8042: [238683] 31 <- i8042 (interrupt, 1, 12)
[  956.301166] i8042: [238683] 08 <- i8042 (interrupt, 1, 12)
[  956.302192] i8042: [238683] 60 <- i8042 (interrupt, 1, 12)
[  956.303219] i8042: [238683] 00 <- i8042 (interrupt, 1, 12)
[  956.308295] i8042: [238685] cf <- i8042 (interrupt, 1, 12)
[  956.309321] i8042: [238685] 7f <- i8042 (interrupt, 1, 12)
[  956.310347] i8042: [238685] 7c <- i8042 (interrupt, 1, 12)
[  956.311373] i8042: [238685] 7f <- i8042 (interrupt, 1, 12)
[  956.312400] i8042: [238686] 1e <- i8042 (interrupt, 1, 12)
[  956.313427] i8042: [238686] ff <- i8042 (interrupt, 1, 12)
[  956.313433] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.318481] i8042: [238687] af <- i8042 (interrupt, 1, 12)
[  956.319454] i8042: [238687] 53 <- i8042 (interrupt, 1, 12)
[  956.320490] i8042: [238688] 31 <- i8042 (interrupt, 1, 12)
[  956.321559] i8042: [238688] 08 <- i8042 (interrupt, 1, 12)
[  956.322585] i8042: [238688] 60 <- i8042 (interrupt, 1, 12)
[  956.323611] i8042: [238688] 00 <- i8042 (interrupt, 1, 12)
[  956.328576] i8042: [238690] cf <- i8042 (interrupt, 1, 12)
[  956.329595] i8042: [238690] 7c <- i8042 (interrupt, 1, 12)
[  956.330620] i8042: [238690] 7c <- i8042 (interrupt, 1, 12)
[  956.331645] i8042: [238690] 7f <- i8042 (interrupt, 1, 12)
[  956.332672] i8042: [238691] 16 <- i8042 (interrupt, 1, 12)
[  956.333698] i8042: [238691] ff <- i8042 (interrupt, 1, 12)
[  956.333704] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.338793] i8042: [238692] af <- i8042 (interrupt, 1, 12)
[  956.340589] i8042: [238693] 53 <- i8042 (interrupt, 1, 12)
[  956.341615] i8042: [238693] 31 <- i8042 (interrupt, 1, 12)
[  956.342642] i8042: [238693] 08 <- i8042 (interrupt, 1, 12)
[  956.343669] i8042: [238693] 60 <- i8042 (interrupt, 1, 12)
[  956.344694] i8042: [238694] 00 <- i8042 (interrupt, 1, 12)
[  956.348906] i8042: [238695] cf <- i8042 (interrupt, 1, 12)
[  956.349943] i8042: [238695] 70 <- i8042 (interrupt, 1, 12)
[  956.350955] i8042: [238695] 7c <- i8042 (interrupt, 1, 12)
[  956.351980] i8042: [238696] 7f <- i8042 (interrupt, 1, 12)
[  956.353069] i8042: [238696] 16 <- i8042 (interrupt, 1, 12)
[  956.354075] i8042: [238696] ff <- i8042 (interrupt, 1, 12)
[  956.354081] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.359166] i8042: [238697] af <- i8042 (interrupt, 1, 12)
[  956.360171] i8042: [238698] 53 <- i8042 (interrupt, 1, 12)
[  956.361176] i8042: [238698] 31 <- i8042 (interrupt, 1, 12)
[  956.362187] i8042: [238698] 08 <- i8042 (interrupt, 1, 12)
[  956.363228] i8042: [238698] 60 <- i8042 (interrupt, 1, 12)
[  956.364254] i8042: [238699] 00 <- i8042 (interrupt, 1, 12)
[  956.369271] i8042: [238700] cf <- i8042 (interrupt, 1, 12)
[  956.370296] i8042: [238700] 70 <- i8042 (interrupt, 1, 12)
[  956.371321] i8042: [238700] 7c <- i8042 (interrupt, 1, 12)
[  956.372346] i8042: [238701] 7f <- i8042 (interrupt, 1, 12)
[  956.373374] i8042: [238701] 16 <- i8042 (interrupt, 1, 12)
[  956.374400] i8042: [238701] ff <- i8042 (interrupt, 1, 12)
[  956.374407] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.379436] i8042: [238702] af <- i8042 (interrupt, 1, 12)
[  956.380517] i8042: [238703] 53 <- i8042 (interrupt, 1, 12)
[  956.381542] i8042: [238703] 31 <- i8042 (interrupt, 1, 12)
[  956.382569] i8042: [238703] 08 <- i8042 (interrupt, 1, 12)
[  956.383594] i8042: [238703] 60 <- i8042 (interrupt, 1, 12)
[  956.384569] i8042: [238704] 00 <- i8042 (interrupt, 1, 12)
[  956.389714] i8042: [238705] cf <- i8042 (interrupt, 1, 12)
[  956.390739] i8042: [238705] 00 <- i8042 (interrupt, 1, 12)
[  956.391752] i8042: [238706] 00 <- i8042 (interrupt, 1, 12)
[  956.392791] i8042: [238706] 08 <- i8042 (interrupt, 1, 12)
[  956.393817] i8042: [238706] 00 <- i8042 (interrupt, 1, 12)
[  956.394842] i8042: [238706] 00 <- i8042 (interrupt, 1, 12)
[  956.399816] i8042: [238708] af <- i8042 (interrupt, 1, 12)
[  956.400839] i8042: [238708] 53 <- i8042 (interrupt, 1, 12)
[  956.401867] i8042: [238708] 31 <- i8042 (interrupt, 1, 12)
[  956.402869] i8042: [238708] 08 <- i8042 (interrupt, 1, 12)
[  956.403891] i8042: [238709] 60 <- i8042 (interrupt, 1, 12)
[  956.404943] i8042: [238709] 00 <- i8042 (interrupt, 1, 12)
[  956.409969] i8042: [238710] cf <- i8042 (interrupt, 1, 12)
[  956.410915] i8042: [238710] 00 <- i8042 (interrupt, 1, 12)
[  956.411939] i8042: [238711] 70 <- i8042 (interrupt, 1, 12)
[  956.413021] i8042: [238711] 7f <- i8042 (interrupt, 1, 12)
[  956.414050] i8042: [238711] 06 <- i8042 (interrupt, 1, 12)
[  956.415058] i8042: [238711] ff <- i8042 (interrupt, 1, 12)
[  956.415065] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.420125] i8042: [238713] af <- i8042 (interrupt, 1, 12)
[  956.421194] i8042: [238713] 53 <- i8042 (interrupt, 1, 12)
[  956.422221] i8042: [238713] 31 <- i8042 (interrupt, 1, 12)
[  956.423222] i8042: [238713] 08 <- i8042 (interrupt, 1, 12)
[  956.424273] i8042: [238714] 60 <- i8042 (interrupt, 1, 12)
[  956.425299] i8042: [238714] 00 <- i8042 (interrupt, 1, 12)
[  956.430377] i8042: [238715] cf <- i8042 (interrupt, 1, 12)
[  956.431356] i8042: [238715] 00 <- i8042 (interrupt, 1, 12)
[  956.432386] i8042: [238716] 70 <- i8042 (interrupt, 1, 12)
[  956.433456] i8042: [238716] 7f <- i8042 (interrupt, 1, 12)
[  956.434483] i8042: [238716] 06 <- i8042 (interrupt, 1, 12)
[  956.435588] i8042: [238716] ff <- i8042 (interrupt, 1, 12)
[  956.435594] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.440837] i8042: [238718] cf <- i8042 (interrupt, 1, 12)
[  956.441819] i8042: [238718] 00 <- i8042 (interrupt, 1, 12)
[  956.442846] i8042: [238718] 00 <- i8042 (interrupt, 1, 12)
[  956.443872] i8042: [238719] 08 <- i8042 (interrupt, 1, 12)
[  956.444898] i8042: [238719] 00 <- i8042 (interrupt, 1, 12)
[  956.446048] i8042: [238719] 00 <- i8042 (interrupt, 1, 12)
[  956.450733] i8042: [238720] af <- i8042 (interrupt, 1, 12)
[  956.451775] i8042: [238721] 53 <- i8042 (interrupt, 1, 12)
[  956.452769] i8042: [238721] 31 <- i8042 (interrupt, 1, 12)
[  956.453794] i8042: [238721] 08 <- i8042 (interrupt, 1, 12)
[  956.454821] i8042: [238721] 60 <- i8042 (interrupt, 1, 12)
[  956.455905] i8042: [238722] 00 <- i8042 (interrupt, 1, 12)
[  956.460850] i8042: [238723] cf <- i8042 (interrupt, 1, 12)
[  956.461876] i8042: [238723] 00 <- i8042 (interrupt, 1, 12)
[  956.462901] i8042: [238723] 70 <- i8042 (interrupt, 1, 12)
[  956.463929] i8042: [238724] 7f <- i8042 (interrupt, 1, 12)
[  956.464956] i8042: [238724] 00 <- i8042 (interrupt, 1, 12)
[  956.466063] i8042: [238724] ff <- i8042 (interrupt, 1, 12)
[  956.466069] psmouse serio1: alps: v3 discard packet[5] = ff
[  956.471083] i8042: [238725] cf <- i8042 (interrupt, 1, 12)
[  956.472107] i8042: [238726] 00 <- i8042 (interrupt, 1, 12)
[  956.473135] i8042: [238726] 00 <- i8042 (interrupt, 1, 12)
[  956.474166] i8042: [238726] 08 <- i8042 (interrupt, 1, 12)
[  956.475175] i8042: [238726] 00 <- i8042 (interrupt, 1, 12)
[  956.476283] i8042: [238727] 00 <- i8042 (interrupt, 1, 12)
[  956.481147] i8042: [238728] af <- i8042 (interrupt, 1, 12)
[  956.482184] i8042: [238728] 53 <- i8042 (interrupt, 1, 12)
[  956.483257] i8042: [238728] 31 <- i8042 (interrupt, 1, 12)
[  956.484283] i8042: [238729] 08 <- i8042 (interrupt, 1, 12)
[  956.485308] i8042: [238729] 60 <- i8042 (interrupt, 1, 12)
[  956.486415] i8042: [238729] 00 <- i8042 (interrupt, 1, 12)
[  956.491454] i8042: [238730] cf <- i8042 (interrupt, 1, 12)
[  956.492481] i8042: [238731] 00 <- i8042 (interrupt, 1, 12)
[  956.493505] i8042: [238731] 00 <- i8042 (interrupt, 1, 12)
[  956.494532] i8042: [238731] 08 <- i8042 (interrupt, 1, 12)
[  956.495559] i8042: [238731] 00 <- i8042 (interrupt, 1, 12)
[  956.496666] i8042: [238732] 00 <- i8042 (interrupt, 1, 12)
[  956.501585] i8042: [238733] cf <- i8042 (interrupt, 1, 12)
[  956.502612] i8042: [238733] 00 <- i8042 (interrupt, 1, 12)
[  956.503639] i8042: [238733] 00 <- i8042 (interrupt, 1, 12)
[  956.504668] i8042: [238734] 08 <- i8042 (interrupt, 1, 12)
[  956.505772] i8042: [238734] 00 <- i8042 (interrupt, 1, 12)
[  956.506681] i8042: [238734] 00 <- i8042 (interrupt, 1, 12)
[  956.511721] i8042: [238735] cf <- i8042 (interrupt, 1, 12)
[  956.512748] i8042: [238736] 00 <- i8042 (interrupt, 1, 12)
[  956.513774] i8042: [238736] 00 <- i8042 (interrupt, 1, 12)
[  956.514802] i8042: [238736] 08 <- i8042 (interrupt, 1, 12)
[  956.515911] i8042: [238737] 00 <- i8042 (interrupt, 1, 12)
[  956.516815] i8042: [238737] 00 <- i8042 (interrupt, 1, 12)
[  956.521858] i8042: [238738] cf <- i8042 (interrupt, 1, 12)
[  956.522884] i8042: [238738] 00 <- i8042 (interrupt, 1, 12)
[  956.523911] i8042: [238739] 00 <- i8042 (interrupt, 1, 12)
[  956.524939] i8042: [238739] 08 <- i8042 (interrupt, 1, 12)
[  956.526045] i8042: [238739] 00 <- i8042 (interrupt, 1, 12)
[  956.526952] i8042: [238739] 00 <- i8042 (interrupt, 1, 12)
[  956.532034] i8042: [238741] cf <- i8042 (interrupt, 1, 12)
[  956.533060] i8042: [238741] 00 <- i8042 (interrupt, 1, 12)
[  956.534085] i8042: [238741] 00 <- i8042 (interrupt, 1, 12)
[  956.536146] i8042: [238742] 08 <- i8042 (interrupt, 1, 12)
[  956.537053] i8042: [238742] 00 <- i8042 (interrupt, 1, 12)
[  956.538079] i8042: [238742] 00 <- i8042 (interrupt, 1, 12)
[  956.542294] i8042: [238743] cf <- i8042 (interrupt, 1, 12)
[  956.543319] i8042: [238743] 00 <- i8042 (interrupt, 1, 12)
[  956.544347] i8042: [238744] 00 <- i8042 (interrupt, 1, 12)
[  956.545374] i8042: [238744] 08 <- i8042 (interrupt, 1, 12)
[  956.546476] i8042: [238744] 00 <- i8042 (interrupt, 1, 12)
[  956.547387] i8042: [238744] 00 <- i8042 (interrupt, 1, 12)
[  956.552427] i8042: [238746] 8f <- i8042 (interrupt, 1, 12)
[  956.553452] i8042: [238746] 00 <- i8042 (interrupt, 1, 12)
[  956.554424] i8042: [238746] 00 <- i8042 (interrupt, 1, 12)
[  956.555540] i8042: [238746] 08 <- i8042 (interrupt, 1, 12)
[  956.556491] i8042: [238747] 00 <- i8042 (interrupt, 1, 12)
[  956.557518] i8042: [238747] 00 <- i8042 (interrupt, 1, 12)
[  956.562533] i8042: [238748] 8f <- i8042 (interrupt, 1, 12)
[  956.563555] i8042: [238748] 00 <- i8042 (interrupt, 1, 12)
[  956.564610] i8042: [238749] 00 <- i8042 (interrupt, 1, 12)
[  956.565714] i8042: [238749] 08 <- i8042 (interrupt, 1, 12)
[  956.566620] i8042: [238749] 00 <- i8042 (interrupt, 1, 12)
[  956.567647] i8042: [238749] 00 <- i8042 (interrupt, 1, 12)
[  956.572804] i8042: [238751] 8f <- i8042 (interrupt, 1, 12)
[  956.573830] i8042: [238751] 00 <- i8042 (interrupt, 1, 12)
[  956.574869] i8042: [238751] 00 <- i8042 (interrupt, 1, 12)
[  956.575945] i8042: [238752] 08 <- i8042 (interrupt, 1, 12)
[  956.576852] i8042: [238752] 00 <- i8042 (interrupt, 1, 12)
[  956.577856] i8042: [238752] 00 <- i8042 (interrupt, 1, 12)
[  956.582877] i8042: [238753] 8f <- i8042 (interrupt, 1, 12)
[  956.583886] i8042: [238754] 00 <- i8042 (interrupt, 1, 12)
[  956.584925] i8042: [238754] 00 <- i8042 (interrupt, 1, 12)
[  956.586073] i8042: [238754] 08 <- i8042 (interrupt, 1, 12)
[  956.586981] i8042: [238754] 00 <- i8042 (interrupt, 1, 12)
[  956.588008] i8042: [238755] 00 <- i8042 (interrupt, 1, 12)
[  956.593152] i8042: [238756] 8f <- i8042 (interrupt, 1, 12)
[  956.594189] i8042: [238756] 00 <- i8042 (interrupt, 1, 12)
[  956.595213] i8042: [238756] 00 <- i8042 (interrupt, 1, 12)
[  956.596319] i8042: [238757] 08 <- i8042 (interrupt, 1, 12)
[  956.597228] i8042: [238757] 00 <- i8042 (interrupt, 1, 12)
[  956.598252] i8042: [238757] 00 <- i8042 (interrupt, 1, 12)
[  956.603292] i8042: [238758] 8f <- i8042 (interrupt, 1, 12)
[  956.604275] i8042: [238759] 00 <- i8042 (interrupt, 1, 12)
[  956.605421] i8042: [238759] 00 <- i8042 (interrupt, 1, 12)
[  956.606326] i8042: [238759] 08 <- i8042 (interrupt, 1, 12)
[  956.607354] i8042: [238759] 00 <- i8042 (interrupt, 1, 12)
[  956.608381] i8042: [238760] 00 <- i8042 (interrupt, 1, 12)
[  956.613386] i8042: [238761] 8f <- i8042 (interrupt, 1, 12)
[  956.614410] i8042: [238761] 00 <- i8042 (interrupt, 1, 12)
[  956.615514] i8042: [238761] 00 <- i8042 (interrupt, 1, 12)
[  956.616423] i8042: [238762] 08 <- i8042 (interrupt, 1, 12)
[  956.617425] i8042: [238762] 00 <- i8042 (interrupt, 1, 12)
[  956.618469] i8042: [238762] 00 <- i8042 (interrupt, 1, 12)
[  956.623663] i8042: [238763] 8f <- i8042 (interrupt, 1, 12)
[  956.624688] i8042: [238764] 00 <- i8042 (interrupt, 1, 12)
[  956.625793] i8042: [238764] 00 <- i8042 (interrupt, 1, 12)
[  956.626671] i8042: [238764] 08 <- i8042 (interrupt, 1, 12)
[  956.627727] i8042: [238764] 00 <- i8042 (interrupt, 1, 12)
[  956.628752] i8042: [238765] 00 <- i8042 (interrupt, 1, 12)
[  956.633770] i8042: [238766] 8f <- i8042 (interrupt, 1, 12)
[  956.634795] i8042: [238766] 00 <- i8042 (interrupt, 1, 12)
[  956.635902] i8042: [238767] 00 <- i8042 (interrupt, 1, 12)
[  956.636769] i8042: [238767] 08 <- i8042 (interrupt, 1, 12)
[  956.637834] i8042: [238767] 00 <- i8042 (interrupt, 1, 12)
[  956.638860] i8042: [238767] 00 <- i8042 (interrupt, 1, 12)
[  956.644016] i8042: [238769] 8f <- i8042 (interrupt, 1, 12)
[  956.645039] i8042: [238769] 00 <- i8042 (interrupt, 1, 12)
[  956.646147] i8042: [238769] 00 <- i8042 (interrupt, 1, 12)
[  956.647053] i8042: [238769] 08 <- i8042 (interrupt, 1, 12)
[  956.648084] i8042: [238770] 00 <- i8042 (interrupt, 1, 12)
[  956.649092] i8042: [238770] 00 <- i8042 (interrupt, 1, 12)
[  956.654219] i8042: [238771] 8f <- i8042 (interrupt, 1, 12)
[  956.655265] i8042: [238771] 00 <- i8042 (interrupt, 1, 12)
[  956.656173] i8042: [238772] 00 <- i8042 (interrupt, 1, 12)
[  956.657200] i8042: [238772] 08 <- i8042 (interrupt, 1, 12)
[  956.658227] i8042: [238772] 00 <- i8042 (interrupt, 1, 12)
[  956.659255] i8042: [238772] 00 <- i8042 (interrupt, 1, 12)
[  956.664294] i8042: [238774] 8f <- i8042 (interrupt, 1, 12)
[  956.665399] i8042: [238774] 00 <- i8042 (interrupt, 1, 12)
[  956.666306] i8042: [238774] 00 <- i8042 (interrupt, 1, 12)
[  956.667335] i8042: [238774] 08 <- i8042 (interrupt, 1, 12)
[  956.668363] i8042: [238775] 00 <- i8042 (interrupt, 1, 12)
[  956.669388] i8042: [238775] 00 <- i8042 (interrupt, 1, 12)
[  956.674528] i8042: [238776] 8f <- i8042 (interrupt, 1, 12)
[  956.675634] i8042: [238776] 00 <- i8042 (interrupt, 1, 12)
[  956.676524] i8042: [238777] 00 <- i8042 (interrupt, 1, 12)
[  956.677535] i8042: [238777] 08 <- i8042 (interrupt, 1, 12)
[  956.678563] i8042: [238777] 00 <- i8042 (interrupt, 1, 12)
[  956.679589] i8042: [238777] 00 <- i8042 (interrupt, 1, 12)
[  956.684665] i8042: [238779] 8f <- i8042 (interrupt, 1, 12)
[  956.685770] i8042: [238779] 00 <- i8042 (interrupt, 1, 12)
[  956.686651] i8042: [238779] 00 <- i8042 (interrupt, 1, 12)
[  956.687647] i8042: [238779] 08 <- i8042 (interrupt, 1, 12)
[  956.688730] i8042: [238780] 00 <- i8042 (interrupt, 1, 12)
[  956.689758] i8042: [238780] 00 <- i8042 (interrupt, 1, 12)
[  956.694797] i8042: [238781] 8f <- i8042 (interrupt, 1, 12)
[  956.695907] i8042: [238782] 00 <- i8042 (interrupt, 1, 12)
[  956.696796] i8042: [238782] 00 <- i8042 (interrupt, 1, 12)
[  956.697825] i8042: [238782] 08 <- i8042 (interrupt, 1, 12)
[  956.698850] i8042: [238782] 00 <- i8042 (interrupt, 1, 12)
[  956.699876] i8042: [238782] 00 <- i8042 (interrupt, 1, 12)
[  956.705106] i8042: [238784] 8f <- i8042 (interrupt, 1, 12)
[  956.706013] i8042: [238784] 00 <- i8042 (interrupt, 1, 12)
[  956.707040] i8042: [238784] 00 <- i8042 (interrupt, 1, 12)
[  956.708066] i8042: [238785] 08 <- i8042 (interrupt, 1, 12)
[  956.709093] i8042: [238785] 00 <- i8042 (interrupt, 1, 12)
[  956.710120] i8042: [238785] 00 <- i8042 (interrupt, 1, 12)
[  956.715241] i8042: [238786] 8f <- i8042 (interrupt, 1, 12)
[  956.716267] i8042: [238787] 00 <- i8042 (interrupt, 1, 12)
[  956.717295] i8042: [238787] 00 <- i8042 (interrupt, 1, 12)
[  956.718321] i8042: [238787] 08 <- i8042 (interrupt, 1, 12)
[  956.719347] i8042: [238787] 00 <- i8042 (interrupt, 1, 12)
[  956.720318] i8042: [238788] 00 <- i8042 (interrupt, 1, 12)
[  956.725376] i8042: [238789] 8f <- i8042 (interrupt, 1, 12)
[  956.726284] i8042: [238789] 00 <- i8042 (interrupt, 1, 12)
[  956.727312] i8042: [238789] 00 <- i8042 (interrupt, 1, 12)
[  956.728338] i8042: [238790] 08 <- i8042 (interrupt, 1, 12)
[  956.729366] i8042: [238790] 00 <- i8042 (interrupt, 1, 12)
[  956.731433] i8042: [238790] 00 <- i8042 (interrupt, 1, 12)
[  956.735593] i8042: [238791] 8f <- i8042 (interrupt, 1, 12)
[  956.736618] i8042: [238792] 00 <- i8042 (interrupt, 1, 12)
[  956.737645] i8042: [238792] 00 <- i8042 (interrupt, 1, 12)
[  956.738671] i8042: [238792] 08 <- i8042 (interrupt, 1, 12)
[  956.739700] i8042: [238792] 00 <- i8042 (interrupt, 1, 12)
[  956.740728] i8042: [238793] 00 <- i8042 (interrupt, 1, 12)
[  956.745827] i8042: [238794] 8f <- i8042 (interrupt, 1, 12)
[  956.746853] i8042: [238794] 00 <- i8042 (interrupt, 1, 12)
[  956.747880] i8042: [238794] 00 <- i8042 (interrupt, 1, 12)
[  956.748906] i8042: [238795] 08 <- i8042 (interrupt, 1, 12)
[  956.749932] i8042: [238795] 00 <- i8042 (interrupt, 1, 12)
[  956.750957] i8042: [238795] 00 <- i8042 (interrupt, 1, 12)
[  956.755917] i8042: [238796] 8f <- i8042 (interrupt, 1, 12)
[  956.756944] i8042: [238797] 00 <- i8042 (interrupt, 1, 12)
[  956.757946] i8042: [238797] 00 <- i8042 (interrupt, 1, 12)
[  956.758961] i8042: [238797] 08 <- i8042 (interrupt, 1, 12)
[  956.759971] i8042: [238798] 00 <- i8042 (interrupt, 1, 12)
[  956.761051] i8042: [238798] 00 <- i8042 (interrupt, 1, 12)
[  956.766008] i8042: [238799] 8f <- i8042 (interrupt, 1, 12)
[  956.767034] i8042: [238799] 00 <- i8042 (interrupt, 1, 12)
[  956.768061] i8042: [238800] 00 <- i8042 (interrupt, 1, 12)
[  956.769087] i8042: [238800] 08 <- i8042 (interrupt, 1, 12)
[  956.770113] i8042: [238800] 00 <- i8042 (interrupt, 1, 12)
[  956.771141] i8042: [238800] 00 <- i8042 (interrupt, 1, 12)
[  956.776275] i8042: [238802] 8f <- i8042 (interrupt, 1, 12)
[  956.777283] i8042: [238802] 00 <- i8042 (interrupt, 1, 12)
[  956.778306] i8042: [238802] 00 <- i8042 (interrupt, 1, 12)
[  956.779335] i8042: [238802] 08 <- i8042 (interrupt, 1, 12)
[  956.780362] i8042: [238803] 00 <- i8042 (interrupt, 1, 12)
[  956.781388] i8042: [238803] 00 <- i8042 (interrupt, 1, 12)
[  956.786344] i8042: [238804] 8f <- i8042 (interrupt, 1, 12)
[  956.787318] i8042: [238804] 00 <- i8042 (interrupt, 1, 12)
[  956.788338] i8042: [238805] 00 <- i8042 (interrupt, 1, 12)
[  956.789421] i8042: [238805] 08 <- i8042 (interrupt, 1, 12)
[  956.790449] i8042: [238805] 00 <- i8042 (interrupt, 1, 12)
[  956.791475] i8042: [238805] 00 <- i8042 (interrupt, 1, 12)
[  957.132264] i8042: [238891] af <- i8042 (interrupt, 1, 12)
[  957.133369] i8042: [238891] 53 <- i8042 (interrupt, 1, 12)
[  957.134275] i8042: [238891] 31 <- i8042 (interrupt, 1, 12)
[  957.135302] i8042: [238891] 08 <- i8042 (interrupt, 1, 12)
[  957.136329] i8042: [238892] 60 <- i8042 (interrupt, 1, 12)
[  957.137354] i8042: [238892] 00 <- i8042 (interrupt, 1, 12)
[  957.142437] i8042: [238893] cf <- i8042 (interrupt, 1, 12)
[  957.143545] i8042: [238893] 00 <- i8042 (interrupt, 1, 12)
[  957.144455] i8042: [238894] 70 <- i8042 (interrupt, 1, 12)
[  957.145479] i8042: [238894] 7f <- i8042 (interrupt, 1, 12)
[  957.146505] i8042: [238894] 00 <- i8042 (interrupt, 1, 12)
[  957.147533] i8042: [238894] ff <- i8042 (interrupt, 1, 12)
[  957.147539] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.152643] i8042: [238896] af <- i8042 (interrupt, 1, 12)
[  957.153553] i8042: [238896] 53 <- i8042 (interrupt, 1, 12)
[  957.154567] i8042: [238896] 31 <- i8042 (interrupt, 1, 12)
[  957.155604] i8042: [238896] 08 <- i8042 (interrupt, 1, 12)
[  957.156631] i8042: [238897] 60 <- i8042 (interrupt, 1, 12)
[  957.157656] i8042: [238897] 00 <- i8042 (interrupt, 1, 12)
[  957.162760] i8042: [238898] cf <- i8042 (interrupt, 1, 12)
[  957.163786] i8042: [238898] 00 <- i8042 (interrupt, 1, 12)
[  957.164811] i8042: [238899] 70 <- i8042 (interrupt, 1, 12)
[  957.165837] i8042: [238899] 7f <- i8042 (interrupt, 1, 12)
[  957.166865] i8042: [238899] 00 <- i8042 (interrupt, 1, 12)
[  957.167892] i8042: [238899] ff <- i8042 (interrupt, 1, 12)
[  957.167898] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.173012] i8042: [238901] af <- i8042 (interrupt, 1, 12)
[  957.174038] i8042: [238901] 53 <- i8042 (interrupt, 1, 12)
[  957.175066] i8042: [238901] 31 <- i8042 (interrupt, 1, 12)
[  957.176092] i8042: [238901] 08 <- i8042 (interrupt, 1, 12)
[  957.177119] i8042: [238902] 60 <- i8042 (interrupt, 1, 12)
[  957.178145] i8042: [238902] 00 <- i8042 (interrupt, 1, 12)
[  957.183104] i8042: [238903] cf <- i8042 (interrupt, 1, 12)
[  957.184130] i8042: [238903] 00 <- i8042 (interrupt, 1, 12)
[  957.185157] i8042: [238904] 00 <- i8042 (interrupt, 1, 12)
[  957.186183] i8042: [238904] 08 <- i8042 (interrupt, 1, 12)
[  957.187209] i8042: [238904] 00 <- i8042 (interrupt, 1, 12)
[  957.188241] i8042: [238905] 00 <- i8042 (interrupt, 1, 12)
[  957.193295] i8042: [238906] af <- i8042 (interrupt, 1, 12)
[  957.194270] i8042: [238906] 53 <- i8042 (interrupt, 1, 12)
[  957.195290] i8042: [238906] 31 <- i8042 (interrupt, 1, 12)
[  957.196346] i8042: [238907] 08 <- i8042 (interrupt, 1, 12)
[  957.197401] i8042: [238907] 60 <- i8042 (interrupt, 1, 12)
[  957.198428] i8042: [238907] 00 <- i8042 (interrupt, 1, 12)
[  957.203402] i8042: [238908] cf <- i8042 (interrupt, 1, 12)
[  957.204431] i8042: [238909] 00 <- i8042 (interrupt, 1, 12)
[  957.205454] i8042: [238909] 78 <- i8042 (interrupt, 1, 12)
[  957.206481] i8042: [238909] 7f <- i8042 (interrupt, 1, 12)
[  957.207508] i8042: [238909] 06 <- i8042 (interrupt, 1, 12)
[  957.208536] i8042: [238910] ff <- i8042 (interrupt, 1, 12)
[  957.208542] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.213627] i8042: [238911] af <- i8042 (interrupt, 1, 12)
[  957.214653] i8042: [238911] 53 <- i8042 (interrupt, 1, 12)
[  957.215678] i8042: [238911] 31 <- i8042 (interrupt, 1, 12)
[  957.216709] i8042: [238912] 08 <- i8042 (interrupt, 1, 12)
[  957.217733] i8042: [238912] 60 <- i8042 (interrupt, 1, 12)
[  957.218760] i8042: [238912] 00 <- i8042 (interrupt, 1, 12)
[  957.223819] i8042: [238913] cf <- i8042 (interrupt, 1, 12)
[  957.224843] i8042: [238914] 00 <- i8042 (interrupt, 1, 12)
[  957.225869] i8042: [238914] 00 <- i8042 (interrupt, 1, 12)
[  957.226896] i8042: [238914] 08 <- i8042 (interrupt, 1, 12)
[  957.227922] i8042: [238914] 00 <- i8042 (interrupt, 1, 12)
[  957.228948] i8042: [238915] 00 <- i8042 (interrupt, 1, 12)
[  957.233923] i8042: [238916] af <- i8042 (interrupt, 1, 12)
[  957.234949] i8042: [238916] 53 <- i8042 (interrupt, 1, 12)
[  957.235977] i8042: [238916] 31 <- i8042 (interrupt, 1, 12)
[  957.237004] i8042: [238917] 08 <- i8042 (interrupt, 1, 12)
[  957.238029] i8042: [238917] 60 <- i8042 (interrupt, 1, 12)
[  957.239058] i8042: [238917] 00 <- i8042 (interrupt, 1, 12)
[  957.244150] i8042: [238918] cf <- i8042 (interrupt, 1, 12)
[  957.245176] i8042: [238919] 40 <- i8042 (interrupt, 1, 12)
[  957.246202] i8042: [238919] 78 <- i8042 (interrupt, 1, 12)
[  957.247230] i8042: [238919] 7f <- i8042 (interrupt, 1, 12)
[  957.248257] i8042: [238920] 16 <- i8042 (interrupt, 1, 12)
[  957.249281] i8042: [238920] ff <- i8042 (interrupt, 1, 12)
[  957.249287] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.254257] i8042: [238921] af <- i8042 (interrupt, 1, 12)
[  957.255282] i8042: [238921] 53 <- i8042 (interrupt, 1, 12)
[  957.256310] i8042: [238922] 31 <- i8042 (interrupt, 1, 12)
[  957.257334] i8042: [238922] 08 <- i8042 (interrupt, 1, 12)
[  957.258360] i8042: [238922] 60 <- i8042 (interrupt, 1, 12)
[  957.259386] i8042: [238922] 00 <- i8042 (interrupt, 1, 12)
[  957.264457] i8042: [238924] cf <- i8042 (interrupt, 1, 12)
[  957.265482] i8042: [238924] 40 <- i8042 (interrupt, 1, 12)
[  957.266566] i8042: [238924] 78 <- i8042 (interrupt, 1, 12)
[  957.267539] i8042: [238924] 7f <- i8042 (interrupt, 1, 12)
[  957.268560] i8042: [238925] 16 <- i8042 (interrupt, 1, 12)
[  957.269644] i8042: [238925] ff <- i8042 (interrupt, 1, 12)
[  957.269650] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.274619] i8042: [238926] af <- i8042 (interrupt, 1, 12)
[  957.275646] i8042: [238926] 53 <- i8042 (interrupt, 1, 12)
[  957.276673] i8042: [238927] 31 <- i8042 (interrupt, 1, 12)
[  957.277699] i8042: [238927] 08 <- i8042 (interrupt, 1, 12)
[  957.278725] i8042: [238927] 60 <- i8042 (interrupt, 1, 12)
[  957.279750] i8042: [238927] 00 <- i8042 (interrupt, 1, 12)
[  957.284844] i8042: [238929] ef <- i8042 (interrupt, 1, 12)
[  957.285870] i8042: [238929] 7f <- i8042 (interrupt, 1, 12)
[  957.286897] i8042: [238929] 7f <- i8042 (interrupt, 1, 12)
[  957.287923] i8042: [238929] 7f <- i8042 (interrupt, 1, 12)
[  957.288950] i8042: [238930] 7e <- i8042 (interrupt, 1, 12)
[  957.289977] i8042: [238930] 67 <- i8042 (interrupt, 1, 12)
[  957.295047] i8042: [238931] cf <- i8042 (interrupt, 1, 12)
[  957.296073] i8042: [238931] 00 <- i8042 (interrupt, 1, 12)
[  957.297106] i8042: [238932] 00 <- i8042 (interrupt, 1, 12)
[  957.298054] i8042: [238932] 08 <- i8042 (interrupt, 1, 12)
[  957.299081] i8042: [238932] 00 <- i8042 (interrupt, 1, 12)
[  957.300165] i8042: [238932] 00 <- i8042 (interrupt, 1, 12)
[  957.305121] i8042: [238934] 9f <- i8042 (interrupt, 1, 12)
[  957.306147] i8042: [238934] 53 <- i8042 (interrupt, 1, 12)
[  957.307175] i8042: [238934] 3a <- i8042 (interrupt, 1, 12)
[  957.308202] i8042: [238934] 08 <- i8042 (interrupt, 1, 12)
[  957.309194] i8042: [238935] 6a <- i8042 (interrupt, 1, 12)
[  957.310253] i8042: [238935] 25 <- i8042 (interrupt, 1, 12)
[  957.315329] i8042: [238936] cf <- i8042 (interrupt, 1, 12)
[  957.316317] i8042: [238937] 7f <- i8042 (interrupt, 1, 12)
[  957.317720] i8042: [238937] 7c <- i8042 (interrupt, 1, 12)
[  957.318747] i8042: [238937] 7f <- i8042 (interrupt, 1, 12)
[  957.319772] i8042: [238937] 1e <- i8042 (interrupt, 1, 12)
[  957.320878] i8042: [238938] ff <- i8042 (interrupt, 1, 12)
[  957.320884] psmouse serio1: alps: v3 discard packet[5] = ff
[  957.325543] i8042: [238939] ef <- i8042 (interrupt, 1, 12)
[  957.326569] i8042: [238939] 53 <- i8042 (interrupt, 1, 12)
[  957.327593] i8042: [238939] 3b <- i8042 (interrupt, 1, 12)
[  957.328567] i8042: [238940] 08 <- i8042 (interrupt, 1, 12)
[  957.329588] i8042: [238940] 18 <- i8042 (interrupt, 1, 12)
[  957.330753] i8042: [238940] 22 <- i8042 (interrupt, 1, 12)
[  957.335676] i8042: [238941] af <- i8042 (interrupt, 1, 12)
[  957.336687] i8042: [238942] 53 <- i8042 (interrupt, 1, 12)
[  957.337693] i8042: [238942] 3b <- i8042 (interrupt, 1, 12)
[  957.338722] i8042: [238942] 08 <- i8042 (interrupt, 1, 12)
[  957.339747] i8042: [238942] 58 <- i8042 (interrupt, 1, 12)
[  957.340853] i8042: [238943] 00 <- i8042 (interrupt, 1, 12)
[  957.345891] i8042: [238944] cf <- i8042 (interrupt, 1, 12)
[  957.346917] i8042: [238944] 7f <- i8042 (interrupt, 1, 12)
[  957.347944] i8042: [238944] 7e <- i8042 (interrupt, 1, 12)
[  957.348971] i8042: [238945] 7f <- i8042 (interrupt, 1, 12)
[  957.350074] i8042: [238945] 7e <- i8042 (interrupt, 1, 12)
[  957.350985] i8042: [238945] 60 <- i8042 (interrupt, 1, 12)
[  957.356024] i8042: [238946] 8f <- i8042 (interrupt, 1, 12)
[  957.357053] i8042: [238947] 53 <- i8042 (interrupt, 1, 12)
[  957.358078] i8042: [238947] 3b <- i8042 (interrupt, 1, 12)
[  957.359104] i8042: [238947] 08 <- i8042 (interrupt, 1, 12)
[  957.360210] i8042: [238947] 6a <- i8042 (interrupt, 1, 12)
[  957.361118] i8042: [238948] 00 <- i8042 (interrupt, 1, 12)
[  957.366102] i8042: [238949] ef <- i8042 (interrupt, 1, 12)
[  957.367126] i8042: [238949] 7f <- i8042 (interrupt, 1, 12)
[  957.368183] i8042: [238949] 7f <- i8042 (interrupt, 1, 12)
[  957.369237] i8042: [238950] 7f <- i8042 (interrupt, 1, 12)
[  957.370342] i8042: [238950] 7e <- i8042 (interrupt, 1, 12)
[  957.371251] i8042: [238950] 77 <- i8042 (interrupt, 1, 12)
[  957.376410] i8042: [238952] 8f <- i8042 (interrupt, 1, 12)
[  957.377416] i8042: [238952] 2c <- i8042 (interrupt, 1, 12)
[  957.378445] i8042: [238952] 54 <- i8042 (interrupt, 1, 12)
[  957.379469] i8042: [238952] 08 <- i8042 (interrupt, 1, 12)
[  957.380577] i8042: [238953] 4b <- i8042 (interrupt, 1, 12)
[  957.381483] i8042: [238953] 15 <- i8042 (interrupt, 1, 12)
[  957.386567] i8042: [238954] cf <- i8042 (interrupt, 1, 12)
[  957.387592] i8042: [238954] 7f <- i8042 (interrupt, 1, 12)
[  957.388622] i8042: [238955] 7e <- i8042 (interrupt, 1, 12)
[  957.389648] i8042: [238955] 7f <- i8042 (interrupt, 1, 12)
[  957.390752] i8042: [238955] 7e <- i8042 (interrupt, 1, 12)
[  957.391661] i8042: [238955] 65 <- i8042 (interrupt, 1, 12)
[  957.396698] i8042: [238957] 9f <- i8042 (interrupt, 1, 12)
[  957.397724] i8042: [238957] 53 <- i8042 (interrupt, 1, 12)
[  957.398749] i8042: [238957] 54 <- i8042 (interrupt, 1, 12)
[  957.399855] i8042: [238957] 08 <- i8042 (interrupt, 1, 12)
[  957.400767] i8042: [238958] 7b <- i8042 (interrupt, 1, 12)
[  957.401791] i8042: [238958] 16 <- i8042 (interrupt, 1, 12)
[  957.406830] i8042: [238959] cf <- i8042 (interrupt, 1, 12)
[  957.407833] i8042: [238959] 7f <- i8042 (interrupt, 1, 12)
[  957.408881] i8042: [238960] 7e <- i8042 (interrupt, 1, 12)
[  957.409988] i8042: [238960] 7f <- i8042 (interrupt, 1, 12)
[  957.410898] i8042: [238960] 7e <- i8042 (interrupt, 1, 12)
[  957.411925] i8042: [238960] 67 <- i8042 (interrupt, 1, 12)
[  957.417995] i8042: [238962] bf <- i8042 (interrupt, 1, 12)
[  957.419049] i8042: [238962] 53 <- i8042 (interrupt, 1, 12)
[  957.420154] i8042: [238962] 54 <- i8042 (interrupt, 1, 12)
[  957.421064] i8042: [238963] 08 <- i8042 (interrupt, 1, 12)
[  957.422089] i8042: [238963] 6c <- i8042 (interrupt, 1, 12)
[  957.423117] i8042: [238963] 17 <- i8042 (interrupt, 1, 12)
[  957.427210] i8042: [238964] ef <- i8042 (interrupt, 1, 12)
[  957.428236] i8042: [238964] 7f <- i8042 (interrupt, 1, 12)
[  957.429264] i8042: [238965] 7f <- i8042 (interrupt, 1, 12)
[  957.430371] i8042: [238965] 7f <- i8042 (interrupt, 1, 12)
[  957.431279] i8042: [238965] 7e <- i8042 (interrupt, 1, 12)
[  957.432306] i8042: [238965] 77 <- i8042 (interrupt, 1, 12)
[  957.437441] i8042: [238967] bf <- i8042 (interrupt, 1, 12)
[  957.438468] i8042: [238967] 53 <- i8042 (interrupt, 1, 12)
[  957.439495] i8042: [238967] 54 <- i8042 (interrupt, 1, 12)
[  957.440546] i8042: [238968] 08 <- i8042 (interrupt, 1, 12)
[  957.441453] i8042: [238968] 6b <- i8042 (interrupt, 1, 12)
[  957.442490] i8042: [238968] 18 <- i8042 (interrupt, 1, 12)
[  957.447543] i8042: [238969] ef <- i8042 (interrupt, 1, 12)
[  957.448570] i8042: [238970] 7f <- i8042 (interrupt, 1, 12)
[  957.449676] i8042: [238970] 7f <- i8042 (interrupt, 1, 12)
[  957.450583] i8042: [238970] 7f <- i8042 (interrupt, 1, 12)
[  957.451611] i8042: [238970] 7e <- i8042 (interrupt, 1, 12)
[  957.452638] i8042: [238971] 77 <- i8042 (interrupt, 1, 12)
[  957.457709] i8042: [238972] bf <- i8042 (interrupt, 1, 12)
[  957.458737] i8042: [238972] 53 <- i8042 (interrupt, 1, 12)
[  957.459853] i8042: [238972] 54 <- i8042 (interrupt, 1, 12)
[  957.460734] i8042: [238973] 08 <- i8042 (interrupt, 1, 12)
[  957.461762] i8042: [238973] 6b <- i8042 (interrupt, 1, 12)
[  957.462787] i8042: [238973] 18 <- i8042 (interrupt, 1, 12)
[  957.467942] i8042: [238974] cf <- i8042 (interrupt, 1, 12)
[  957.468972] i8042: [238975] 7f <- i8042 (interrupt, 1, 12)
[  957.470081] i8042: [238975] 7e <- i8042 (interrupt, 1, 12)
[  957.470987] i8042: [238975] 7f <- i8042 (interrupt, 1, 12)
[  957.472014] i8042: [238975] 7e <- i8042 (interrupt, 1, 12)
[  957.473042] i8042: [238976] 63 <- i8042 (interrupt, 1, 12)
[  957.478057] i8042: [238977] bf <- i8042 (interrupt, 1, 12)
[  957.479085] i8042: [238977] 6e <- i8042 (interrupt, 1, 12)
[  957.480185] i8042: [238977] 54 <- i8042 (interrupt, 1, 12)
[  957.481096] i8042: [238978] 08 <- i8042 (interrupt, 1, 12)
[  957.482111] i8042: [238978] 7d <- i8042 (interrupt, 1, 12)
[  957.483136] i8042: [238978] 1a <- i8042 (interrupt, 1, 12)
[  957.488313] i8042: [238979] ef <- i8042 (interrupt, 1, 12)
[  957.489339] i8042: [238980] 7f <- i8042 (interrupt, 1, 12)
[  957.490447] i8042: [238980] 7f <- i8042 (interrupt, 1, 12)
[  957.491355] i8042: [238980] 7f <- i8042 (interrupt, 1, 12)
[  957.492382] i8042: [238981] 7e <- i8042 (interrupt, 1, 12)
[  957.493406] i8042: [238981] 77 <- i8042 (interrupt, 1, 12)
[  957.498446] i8042: [238982] 8f <- i8042 (interrupt, 1, 12)
[  957.499553] i8042: [238982] 6f <- i8042 (interrupt, 1, 12)
[  957.500464] i8042: [238983] 58 <- i8042 (interrupt, 1, 12)
[  957.501490] i8042: [238983] 08 <- i8042 (interrupt, 1, 12)
[  957.502517] i8042: [238983] 45 <- i8042 (interrupt, 1, 12)
[  957.503542] i8042: [238983] 15 <- i8042 (interrupt, 1, 12)
[  957.508623] i8042: [238985] ef <- i8042 (interrupt, 1, 12)
[  957.509689] i8042: [238985] 7f <- i8042 (interrupt, 1, 12)
[  957.510575] i8042: [238985] 7f <- i8042 (interrupt, 1, 12)
[  957.511649] i8042: [238985] 7f <- i8042 (interrupt, 1, 12)
[  957.513227] i8042: [238986] 7e <- i8042 (interrupt, 1, 12)
[  957.514310] i8042: [238986] 73 <- i8042 (interrupt, 1, 12)
[  957.518756] i8042: [238987] 9f <- i8042 (interrupt, 1, 12)
[  957.519861] i8042: [238987] 53 <- i8042 (interrupt, 1, 12)
[  957.520769] i8042: [238988] 54 <- i8042 (interrupt, 1, 12)
[  957.521799] i8042: [238988] 08 <- i8042 (interrupt, 1, 12)
[  957.522822] i8042: [238988] 7d <- i8042 (interrupt, 1, 12)
[  957.523847] i8042: [238988] 19 <- i8042 (interrupt, 1, 12)
[  957.529006] i8042: [238990] ef <- i8042 (interrupt, 1, 12)
[  957.530108] i8042: [238990] 7f <- i8042 (interrupt, 1, 12)
[  957.531017] i8042: [238990] 7f <- i8042 (interrupt, 1, 12)
[  957.532043] i8042: [238990] 7f <- i8042 (interrupt, 1, 12)
[  957.533068] i8042: [238991] 7e <- i8042 (interrupt, 1, 12)
[  957.534100] i8042: [238991] 77 <- i8042 (interrupt, 1, 12)
[  957.539120] i8042: [238992] 9f <- i8042 (interrupt, 1, 12)
[  957.540223] i8042: [238992] 53 <- i8042 (interrupt, 1, 12)
[  957.541132] i8042: [238993] 58 <- i8042 (interrupt, 1, 12)
[  957.542157] i8042: [238993] 08 <- i8042 (interrupt, 1, 12)
[  957.543160] i8042: [238993] 75 <- i8042 (interrupt, 1, 12)
[  957.544211] i8042: [238993] 13 <- i8042 (interrupt, 1, 12)
[  957.549395] i8042: [238995] ef <- i8042 (interrupt, 1, 12)
[  957.550326] i8042: [238995] 7f <- i8042 (interrupt, 1, 12)
[  957.551351] i8042: [238995] 7f <- i8042 (interrupt, 1, 12)
[  957.552376] i8042: [238995] 7f <- i8042 (interrupt, 1, 12)
[  957.553402] i8042: [238996] 7e <- i8042 (interrupt, 1, 12)
[  957.554428] i8042: [238996] 73 <- i8042 (interrupt, 1, 12)
[  957.559546] i8042: [238997] bf <- i8042 (interrupt, 1, 12)
[  957.560574] i8042: [238998] 53 <- i8042 (interrupt, 1, 12)
[  957.561599] i8042: [238998] 58 <- i8042 (interrupt, 1, 12)
[  957.562624] i8042: [238998] 08 <- i8042 (interrupt, 1, 12)
[  957.563651] i8042: [238998] 65 <- i8042 (interrupt, 1, 12)
[  957.564679] i8042: [238999] 13 <- i8042 (interrupt, 1, 12)
[  957.569777] i8042: [239000] ef <- i8042 (interrupt, 1, 12)
[  957.570801] i8042: [239000] 7f <- i8042 (interrupt, 1, 12)
[  957.571827] i8042: [239000] 7f <- i8042 (interrupt, 1, 12)
[  957.572852] i8042: [239001] 7f <- i8042 (interrupt, 1, 12)
[  957.573878] i8042: [239001] 7e <- i8042 (interrupt, 1, 12)
[  957.574905] i8042: [239001] 77 <- i8042 (interrupt, 1, 12)
[  957.579877] i8042: [239002] af <- i8042 (interrupt, 1, 12)
[  957.580812] i8042: [239003] 6e <- i8042 (interrupt, 1, 12)
[  957.581837] i8042: [239003] 3b <- i8042 (interrupt, 1, 12)
[  957.582863] i8042: [239003] 08 <- i8042 (interrupt, 1, 12)
[  957.583890] i8042: [239003] 6b <- i8042 (interrupt, 1, 12)
[  957.584917] i8042: [239004] 33 <- i8042 (interrupt, 1, 12)
[  957.590033] i8042: [239005] ef <- i8042 (interrupt, 1, 12)
[  957.591059] i8042: [239005] 7f <- i8042 (interrupt, 1, 12)
[  957.592085] i8042: [239005] 7f <- i8042 (interrupt, 1, 12)
[  957.593091] i8042: [239006] 7f <- i8042 (interrupt, 1, 12)
[  957.594136] i8042: [239006] 7e <- i8042 (interrupt, 1, 12)
[  957.595162] i8042: [239006] 77 <- i8042 (interrupt, 1, 12)
[  957.600122] i8042: [239007] 9f <- i8042 (interrupt, 1, 12)
[  957.601147] i8042: [239008] 53 <- i8042 (interrupt, 1, 12)
[  957.602173] i8042: [239008] 38 <- i8042 (interrupt, 1, 12)
[  957.603198] i8042: [239008] 08 <- i8042 (interrupt, 1, 12)
[  957.604171] i8042: [239008] 76 <- i8042 (interrupt, 1, 12)
[  957.605193] i8042: [239009] 3e <- i8042 (interrupt, 1, 12)
[  957.610825] i8042: [239010] ef <- i8042 (interrupt, 1, 12)
[  957.611849] i8042: [239010] 7f <- i8042 (interrupt, 1, 12)
[  957.612900] i8042: [239011] 7f <- i8042 (interrupt, 1, 12)
[  957.613925] i8042: [239011] 7f <- i8042 (interrupt, 1, 12)
[  957.614951] i8042: [239011] 7e <- i8042 (interrupt, 1, 12)
[  957.615977] i8042: [239011] 77 <- i8042 (interrupt, 1, 12)
[  957.620481] i8042: [239013] 9f <- i8042 (interrupt, 1, 12)
[  957.621506] i8042: [239013] 6e <- i8042 (interrupt, 1, 12)
[  957.622531] i8042: [239013] 38 <- i8042 (interrupt, 1, 12)
[  957.623590] i8042: [239013] 08 <- i8042 (interrupt, 1, 12)
[  957.624619] i8042: [239014] 7d <- i8042 (interrupt, 1, 12)
[  957.625642] i8042: [239014] 3e <- i8042 (interrupt, 1, 12)
[  957.630906] i8042: [239015] ef <- i8042 (interrupt, 1, 12)
[  957.631816] i8042: [239015] 7f <- i8042 (interrupt, 1, 12)
[  957.632842] i8042: [239016] 7f <- i8042 (interrupt, 1, 12)
[  957.633869] i8042: [239016] 7f <- i8042 (interrupt, 1, 12)
[  957.634894] i8042: [239016] 7e <- i8042 (interrupt, 1, 12)
[  957.635938] i8042: [239016] 71 <- i8042 (interrupt, 1, 12)
[  957.640907] i8042: [239018] af <- i8042 (interrupt, 1, 12)
[  957.641815] i8042: [239018] 53 <- i8042 (interrupt, 1, 12)
[  957.642840] i8042: [239018] 54 <- i8042 (interrupt, 1, 12)
[  957.643868] i8042: [239018] 08 <- i8042 (interrupt, 1, 12)
[  957.644895] i8042: [239019] 7e <- i8042 (interrupt, 1, 12)
[  957.645865] i8042: [239019] 1b <- i8042 (interrupt, 1, 12)
[  957.650998] i8042: [239020] ef <- i8042 (interrupt, 1, 12)
[  957.652024] i8042: [239020] 7f <- i8042 (interrupt, 1, 12)
[  957.653052] i8042: [239021] 7f <- i8042 (interrupt, 1, 12)
[  957.654038] i8042: [239021] 7f <- i8042 (interrupt, 1, 12)
[  957.655104] i8042: [239021] 7e <- i8042 (interrupt, 1, 12)
[  957.656131] i8042: [239021] 77 <- i8042 (interrupt, 1, 12)
[  957.661207] i8042: [239023] bf <- i8042 (interrupt, 1, 12)
[  957.662236] i8042: [239023] 53 <- i8042 (interrupt, 1, 12)
[  957.663262] i8042: [239023] 38 <- i8042 (interrupt, 1, 12)
[  957.664289] i8042: [239023] 08 <- i8042 (interrupt, 1, 12)
[  957.665318] i8042: [239024] 7d <- i8042 (interrupt, 1, 12)
[  957.666342] i8042: [239024] 3e <- i8042 (interrupt, 1, 12)
[  957.671421] i8042: [239025] ef <- i8042 (interrupt, 1, 12)
[  957.672446] i8042: [239025] 7f <- i8042 (interrupt, 1, 12)
[  957.673473] i8042: [239026] 7f <- i8042 (interrupt, 1, 12)
[  957.674499] i8042: [239026] 7f <- i8042 (interrupt, 1, 12)
[  957.675524] i8042: [239026] 7e <- i8042 (interrupt, 1, 12)
[  957.676499] i8042: [239027] 77 <- i8042 (interrupt, 1, 12)
[  957.681607] i8042: [239028] af <- i8042 (interrupt, 1, 12)
[  957.682633] i8042: [239028] 53 <- i8042 (interrupt, 1, 12)
[  957.683659] i8042: [239028] 38 <- i8042 (interrupt, 1, 12)
[  957.684688] i8042: [239029] 08 <- i8042 (interrupt, 1, 12)
[  957.685718] i8042: [239029] 7b <- i8042 (interrupt, 1, 12)
[  957.686725] i8042: [239029] 3e <- i8042 (interrupt, 1, 12)
[  957.691776] i8042: [239030] ef <- i8042 (interrupt, 1, 12)
[  957.692823] i8042: [239031] 7f <- i8042 (interrupt, 1, 12)
[  957.693849] i8042: [239031] 7f <- i8042 (interrupt, 1, 12)
[  957.694876] i8042: [239031] 7f <- i8042 (interrupt, 1, 12)
[  957.695905] i8042: [239031] 7e <- i8042 (interrupt, 1, 12)
[  957.696930] i8042: [239032] 73 <- i8042 (interrupt, 1, 12)
[  957.701905] i8042: [239033] 8f <- i8042 (interrupt, 1, 12)
[  957.702941] i8042: [239033] 6e <- i8042 (interrupt, 1, 12)
[  957.703943] i8042: [239033] 38 <- i8042 (interrupt, 1, 12)
[  957.704972] i8042: [239034] 08 <- i8042 (interrupt, 1, 12)
[  957.705996] i8042: [239034] 7c <- i8042 (interrupt, 1, 12)
[  957.707023] i8042: [239034] 3e <- i8042 (interrupt, 1, 12)
[  957.712090] i8042: [239035] ef <- i8042 (interrupt, 1, 12)
[  957.713115] i8042: [239036] 7f <- i8042 (interrupt, 1, 12)
[  957.714144] i8042: [239036] 7f <- i8042 (interrupt, 1, 12)
[  957.715171] i8042: [239036] 7f <- i8042 (interrupt, 1, 12)
[  957.716197] i8042: [239036] 7e <- i8042 (interrupt, 1, 12)
[  957.717227] i8042: [239037] 76 <- i8042 (interrupt, 1, 12)
[  957.722299] i8042: [239038] af <- i8042 (interrupt, 1, 12)
[  957.723302] i8042: [239038] 6e <- i8042 (interrupt, 1, 12)
[  957.724314] i8042: [239038] 54 <- i8042 (interrupt, 1, 12)
[  957.725378] i8042: [239039] 08 <- i8042 (interrupt, 1, 12)
[  957.726398] i8042: [239039] 7e <- i8042 (interrupt, 1, 12)
[  957.727431] i8042: [239039] 1e <- i8042 (interrupt, 1, 12)
[  957.732406] i8042: [239040] ef <- i8042 (interrupt, 1, 12)
[  957.733433] i8042: [239041] 7f <- i8042 (interrupt, 1, 12)
[  957.734460] i8042: [239041] 7f <- i8042 (interrupt, 1, 12)
[  957.735486] i8042: [239041] 7f <- i8042 (interrupt, 1, 12)
[  957.736515] i8042: [239042] 7e <- i8042 (interrupt, 1, 12)
[  957.737540] i8042: [239042] 77 <- i8042 (interrupt, 1, 12)
[  957.742636] i8042: [239043] 9f <- i8042 (interrupt, 1, 12)
[  957.743659] i8042: [239043] 6e <- i8042 (interrupt, 1, 12)
[  957.744686] i8042: [239044] 54 <- i8042 (interrupt, 1, 12)
[  957.745713] i8042: [239044] 08 <- i8042 (interrupt, 1, 12)
[  957.746740] i8042: [239044] 7f <- i8042 (interrupt, 1, 12)
[  957.747768] i8042: [239044] 1e <- i8042 (interrupt, 1, 12)
[  957.752767] i8042: [239046] ef <- i8042 (interrupt, 1, 12)
[  957.753792] i8042: [239046] 7f <- i8042 (interrupt, 1, 12)
[  957.754762] i8042: [239046] 7f <- i8042 (interrupt, 1, 12)
[  957.755786] i8042: [239046] 7f <- i8042 (interrupt, 1, 12)
[  957.756871] i8042: [239047] 7e <- i8042 (interrupt, 1, 12)
[  957.757896] i8042: [239047] 77 <- i8042 (interrupt, 1, 12)
[  957.762986] i8042: [239048] bf <- i8042 (interrupt, 1, 12)
[  957.764014] i8042: [239048] 6e <- i8042 (interrupt, 1, 12)
[  957.765043] i8042: [239049] 58 <- i8042 (interrupt, 1, 12)
[  957.766067] i8042: [239049] 08 <- i8042 (interrupt, 1, 12)
[  957.767094] i8042: [239049] 76 <- i8042 (interrupt, 1, 12)
[  957.768159] i8042: [239049] 17 <- i8042 (interrupt, 1, 12)
[  957.773122] i8042: [239051] ef <- i8042 (interrupt, 1, 12)
[  957.774146] i8042: [239051] 7f <- i8042 (interrupt, 1, 12)
[  957.775172] i8042: [239051] 7f <- i8042 (interrupt, 1, 12)
[  957.776198] i8042: [239051] 7f <- i8042 (interrupt, 1, 12)
[  957.777225] i8042: [239052] 7e <- i8042 (interrupt, 1, 12)
[  957.778330] i8042: [239052] 76 <- i8042 (interrupt, 1, 12)
[  957.783369] i8042: [239053] bf <- i8042 (interrupt, 1, 12)
[  957.784395] i8042: [239053] 6e <- i8042 (interrupt, 1, 12)
[  957.785382] i8042: [239054] 54 <- i8042 (interrupt, 1, 12)
[  957.786446] i8042: [239054] 08 <- i8042 (interrupt, 1, 12)
[  957.787473] i8042: [239054] 7e <- i8042 (interrupt, 1, 12)
[  957.788524] i8042: [239054] 1e <- i8042 (interrupt, 1, 12)
[  957.793264] i8042: [239056] ef <- i8042 (interrupt, 1, 12)
[  957.794291] i8042: [239056] 7f <- i8042 (interrupt, 1, 12)
[  957.795317] i8042: [239056] 7f <- i8042 (interrupt, 1, 12)
[  957.796343] i8042: [239056] 7f <- i8042 (interrupt, 1, 12)
[  957.797371] i8042: [239057] 7e <- i8042 (interrupt, 1, 12)
[  957.798474] i8042: [239057] 73 <- i8042 (interrupt, 1, 12)
[  957.803514] i8042: [239058] bf <- i8042 (interrupt, 1, 12)
[  957.804542] i8042: [239058] 6e <- i8042 (interrupt, 1, 12)
[  957.806360] i8042: [239059] 38 <- i8042 (interrupt, 1, 12)
[  957.807388] i8042: [239059] 08 <- i8042 (interrupt, 1, 12)
[  957.808494] i8042: [239059] 7a <- i8042 (interrupt, 1, 12)
[  957.809402] i8042: [239060] 3e <- i8042 (interrupt, 1, 12)
[  957.813733] i8042: [239061] ef <- i8042 (interrupt, 1, 12)
[  957.814761] i8042: [239061] 7f <- i8042 (interrupt, 1, 12)
[  957.815787] i8042: [239061] 7f <- i8042 (interrupt, 1, 12)
[  957.816815] i8042: [239062] 7f <- i8042 (interrupt, 1, 12)
[  957.817840] i8042: [239062] 7e <- i8042 (interrupt, 1, 12)
[  957.818947] i8042: [239062] 73 <- i8042 (interrupt, 1, 12)
[  957.824222] i8042: [239063] 8f <- i8042 (interrupt, 1, 12)
[  957.825249] i8042: [239064] 00 <- i8042 (interrupt, 1, 12)
[  957.826274] i8042: [239064] 00 <- i8042 (interrupt, 1, 12)
[  957.827301] i8042: [239064] 08 <- i8042 (interrupt, 1, 12)
[  957.828326] i8042: [239064] 00 <- i8042 (interrupt, 1, 12)
[  957.829446] i8042: [239065] 00 <- i8042 (interrupt, 1, 12)
[  957.834219] i8042: [239066] 8f <- i8042 (interrupt, 1, 12)
[  957.835242] i8042: [239066] 00 <- i8042 (interrupt, 1, 12)
[  957.836270] i8042: [239066] 00 <- i8042 (interrupt, 1, 12)
[  957.837297] i8042: [239067] 08 <- i8042 (interrupt, 1, 12)
[  957.838323] i8042: [239067] 00 <- i8042 (interrupt, 1, 12)
[  957.839427] i8042: [239067] 00 <- i8042 (interrupt, 1, 12)
[  957.844347] i8042: [239068] 8f <- i8042 (interrupt, 1, 12)
[  957.845374] i8042: [239069] 00 <- i8042 (interrupt, 1, 12)
[  957.846400] i8042: [239069] 00 <- i8042 (interrupt, 1, 12)
[  957.847427] i8042: [239069] 08 <- i8042 (interrupt, 1, 12)
[  957.848453] i8042: [239069] 00 <- i8042 (interrupt, 1, 12)
[  957.849558] i8042: [239070] 00 <- i8042 (interrupt, 1, 12)
[  957.854481] i8042: [239071] 8f <- i8042 (interrupt, 1, 12)
[  957.855504] i8042: [239071] 00 <- i8042 (interrupt, 1, 12)
[  957.856533] i8042: [239071] 00 <- i8042 (interrupt, 1, 12)
[  957.857560] i8042: [239072] 08 <- i8042 (interrupt, 1, 12)
[  957.858586] i8042: [239072] 00 <- i8042 (interrupt, 1, 12)
[  957.859705] i8042: [239072] 00 <- i8042 (interrupt, 1, 12)
[  957.864713] i8042: [239074] 8f <- i8042 (interrupt, 1, 12)
[  957.865737] i8042: [239074] 00 <- i8042 (interrupt, 1, 12)
[  957.866763] i8042: [239074] 00 <- i8042 (interrupt, 1, 12)
[  957.867790] i8042: [239074] 08 <- i8042 (interrupt, 1, 12)
[  957.868895] i8042: [239075] 00 <- i8042 (interrupt, 1, 12)
[  957.869804] i8042: [239075] 00 <- i8042 (interrupt, 1, 12)
[  957.874886] i8042: [239076] 8f <- i8042 (interrupt, 1, 12)
[  957.875911] i8042: [239076] 00 <- i8042 (interrupt, 1, 12)
[  957.876939] i8042: [239077] 00 <- i8042 (interrupt, 1, 12)
[  957.877964] i8042: [239077] 08 <- i8042 (interrupt, 1, 12)
[  957.879071] i8042: [239077] 00 <- i8042 (interrupt, 1, 12)
[  957.879979] i8042: [239077] 00 <- i8042 (interrupt, 1, 12)
[  957.884960] i8042: [239079] 8f <- i8042 (interrupt, 1, 12)
[  957.885982] i8042: [239079] 00 <- i8042 (interrupt, 1, 12)
[  957.887037] i8042: [239079] 00 <- i8042 (interrupt, 1, 12)
[  957.888094] i8042: [239079] 08 <- i8042 (interrupt, 1, 12)
[  957.889202] i8042: [239080] 00 <- i8042 (interrupt, 1, 12)
[  957.890109] i8042: [239080] 00 <- i8042 (interrupt, 1, 12)
[  957.895269] i8042: [239081] 8f <- i8042 (interrupt, 1, 12)
[  957.896293] i8042: [239081] 00 <- i8042 (interrupt, 1, 12)
[  957.897325] i8042: [239082] 00 <- i8042 (interrupt, 1, 12)
[  957.898333] i8042: [239082] 08 <- i8042 (interrupt, 1, 12)
[  957.899438] i8042: [239082] 00 <- i8042 (interrupt, 1, 12)
[  957.900347] i8042: [239082] 00 <- i8042 (interrupt, 1, 12)
[  957.905363] i8042: [239084] 8f <- i8042 (interrupt, 1, 12)
[  957.906393] i8042: [239084] 00 <- i8042 (interrupt, 1, 12)
[  957.907419] i8042: [239084] 00 <- i8042 (interrupt, 1, 12)
[  957.908443] i8042: [239084] 08 <- i8042 (interrupt, 1, 12)
[  957.909554] i8042: [239085] 00 <- i8042 (interrupt, 1, 12)
[  957.910461] i8042: [239085] 00 <- i8042 (interrupt, 1, 12)
[  957.915619] i8042: [239086] 8f <- i8042 (interrupt, 1, 12)
[  957.916646] i8042: [239087] 00 <- i8042 (interrupt, 1, 12)
[  957.917671] i8042: [239087] 00 <- i8042 (interrupt, 1, 12)
[  957.918726] i8042: [239087] 08 <- i8042 (interrupt, 1, 12)
[  957.919644] i8042: [239087] 00 <- i8042 (interrupt, 1, 12)
[  957.920715] i8042: [239088] 00 <- i8042 (interrupt, 1, 12)
[  957.925754] i8042: [239089] 8f <- i8042 (interrupt, 1, 12)
[  957.926778] i8042: [239089] 00 <- i8042 (interrupt, 1, 12)
[  957.927804] i8042: [239089] 00 <- i8042 (interrupt, 1, 12)
[  957.928914] i8042: [239090] 08 <- i8042 (interrupt, 1, 12)
[  957.929798] i8042: [239090] 00 <- i8042 (interrupt, 1, 12)
[  957.930820] i8042: [239090] 00 <- i8042 (interrupt, 1, 12)
[  957.935887] i8042: [239091] 8f <- i8042 (interrupt, 1, 12)
[  957.936914] i8042: [239092] 00 <- i8042 (interrupt, 1, 12)
[  957.937941] i8042: [239092] 00 <- i8042 (interrupt, 1, 12)
[  957.939048] i8042: [239092] 08 <- i8042 (interrupt, 1, 12)
[  957.939959] i8042: [239092] 00 <- i8042 (interrupt, 1, 12)
[  957.940986] i8042: [239093] 00 <- i8042 (interrupt, 1, 12)
[  957.946124] i8042: [239094] 8f <- i8042 (interrupt, 1, 12)
[  957.947152] i8042: [239094] 00 <- i8042 (interrupt, 1, 12)
[  957.948179] i8042: [239094] 00 <- i8042 (interrupt, 1, 12)
[  957.949233] i8042: [239095] 08 <- i8042 (interrupt, 1, 12)
[  957.950152] i8042: [239095] 00 <- i8042 (interrupt, 1, 12)
[  957.951196] i8042: [239095] 00 <- i8042 (interrupt, 1, 12)
[  957.956262] i8042: [239096] 8f <- i8042 (interrupt, 1, 12)
[  957.957290] i8042: [239097] 00 <- i8042 (interrupt, 1, 12)
[  957.958316] i8042: [239097] 00 <- i8042 (interrupt, 1, 12)
[  957.959422] i8042: [239097] 08 <- i8042 (interrupt, 1, 12)
[  957.960308] i8042: [239097] 00 <- i8042 (interrupt, 1, 12)
[  957.961360] i8042: [239098] 00 <- i8042 (interrupt, 1, 12)
[  957.966401] i8042: [239099] 8f <- i8042 (interrupt, 1, 12)
[  957.967427] i8042: [239099] 00 <- i8042 (interrupt, 1, 12)
[  957.968535] i8042: [239099] 00 <- i8042 (interrupt, 1, 12)
[  957.969443] i8042: [239100] 08 <- i8042 (interrupt, 1, 12)
[  957.970470] i8042: [239100] 00 <- i8042 (interrupt, 1, 12)
[  957.971496] i8042: [239100] 00 <- i8042 (interrupt, 1, 12)
[  957.976654] i8042: [239102] 8f <- i8042 (interrupt, 1, 12)
[  957.977683] i8042: [239102] 00 <- i8042 (interrupt, 1, 12)
[  957.978789] i8042: [239102] 00 <- i8042 (interrupt, 1, 12)
[  957.979697] i8042: [239102] 08 <- i8042 (interrupt, 1, 12)
[  957.980725] i8042: [239103] 00 <- i8042 (interrupt, 1, 12)
[  957.981750] i8042: [239103] 00 <- i8042 (interrupt, 1, 12)
[  957.986789] i8042: [239104] 8f <- i8042 (interrupt, 1, 12)
[  957.987816] i8042: [239104] 00 <- i8042 (interrupt, 1, 12)
[  957.988925] i8042: [239105] 00 <- i8042 (interrupt, 1, 12)
[  957.989833] i8042: [239105] 08 <- i8042 (interrupt, 1, 12)
[  957.990858] i8042: [239105] 00 <- i8042 (interrupt, 1, 12)
[  957.991886] i8042: [239105] 00 <- i8042 (interrupt, 1, 12)
[  957.996965] i8042: [239107] 8f <- i8042 (interrupt, 1, 12)
[  957.997995] i8042: [239107] 00 <- i8042 (interrupt, 1, 12)
[  957.999082] i8042: [239107] 00 <- i8042 (interrupt, 1, 12)
[  957.999989] i8042: [239107] 08 <- i8042 (interrupt, 1, 12)
[  958.001691] i8042: [239108] 00 <- i8042 (interrupt, 1, 12)
[  958.002717] i8042: [239108] 00 <- i8042 (interrupt, 1, 12)
[  958.007166] i8042: [239109] 8f <- i8042 (interrupt, 1, 12)
[  958.008193] i8042: [239109] 00 <- i8042 (interrupt, 1, 12)
[  958.009297] i8042: [239110] 00 <- i8042 (interrupt, 1, 12)
[  958.010207] i8042: [239110] 08 <- i8042 (interrupt, 1, 12)
[  958.011234] i8042: [239110] 00 <- i8042 (interrupt, 1, 12)
[  958.012262] i8042: [239110] 00 <- i8042 (interrupt, 1, 12)
[  958.017302] i8042: [239112] 8f <- i8042 (interrupt, 1, 12)
[  958.018353] i8042: [239112] 00 <- i8042 (interrupt, 1, 12)
[  958.019272] i8042: [239112] 00 <- i8042 (interrupt, 1, 12)
[  958.020341] i8042: [239112] 08 <- i8042 (interrupt, 1, 12)
[  958.021370] i8042: [239113] 00 <- i8042 (interrupt, 1, 12)
[  958.022394] i8042: [239113] 00 <- i8042 (interrupt, 1, 12)
[  958.027534] i8042: [239114] 8f <- i8042 (interrupt, 1, 12)
[  958.028637] i8042: [239114] 00 <- i8042 (interrupt, 1, 12)
[  958.029547] i8042: [239115] 00 <- i8042 (interrupt, 1, 12)
[  958.030573] i8042: [239115] 08 <- i8042 (interrupt, 1, 12)
[  958.031601] i8042: [239115] 00 <- i8042 (interrupt, 1, 12)
[  958.032629] i8042: [239115] 00 <- i8042 (interrupt, 1, 12)
[  958.037670] i8042: [239117] 8f <- i8042 (interrupt, 1, 12)
[  958.038777] i8042: [239117] 00 <- i8042 (interrupt, 1, 12)
[  958.039684] i8042: [239117] 00 <- i8042 (interrupt, 1, 12)
[  958.040713] i8042: [239118] 08 <- i8042 (interrupt, 1, 12)
[  958.041739] i8042: [239118] 00 <- i8042 (interrupt, 1, 12)
[  958.042767] i8042: [239118] 00 <- i8042 (interrupt, 1, 12)
[  958.047808] i8042: [239119] 8f <- i8042 (interrupt, 1, 12)
[  958.048894] i8042: [239120] 00 <- i8042 (interrupt, 1, 12)
[  958.049805] i8042: [239120] 00 <- i8042 (interrupt, 1, 12)
[  958.050830] i8042: [239120] 08 <- i8042 (interrupt, 1, 12)
[  958.051857] i8042: [239120] 00 <- i8042 (interrupt, 1, 12)
[  958.052884] i8042: [239121] 00 <- i8042 (interrupt, 1, 12)
[  958.058040] i8042: [239122] 8f <- i8042 (interrupt, 1, 12)
[  958.059146] i8042: [239122] 00 <- i8042 (interrupt, 1, 12)
[  958.060056] i8042: [239122] 00 <- i8042 (interrupt, 1, 12)
[  958.061084] i8042: [239123] 08 <- i8042 (interrupt, 1, 12)
[  958.062109] i8042: [239123] 00 <- i8042 (interrupt, 1, 12)
[  958.063135] i8042: [239123] 00 <- i8042 (interrupt, 1, 12)
[  958.068255] i8042: [239124] 8f <- i8042 (interrupt, 1, 12)
[  958.069282] i8042: [239125] 00 <- i8042 (interrupt, 1, 12)
[  958.070306] i8042: [239125] 00 <- i8042 (interrupt, 1, 12)
[  958.071331] i8042: [239125] 08 <- i8042 (interrupt, 1, 12)
[  958.072357] i8042: [239125] 00 <- i8042 (interrupt, 1, 12)
[  958.073384] i8042: [239126] 00 <- i8042 (interrupt, 1, 12)
[  958.078383] i8042: [239127] 8f <- i8042 (interrupt, 1, 12)
[  958.079292] i8042: [239127] 00 <- i8042 (interrupt, 1, 12)
[  958.080317] i8042: [239127] 00 <- i8042 (interrupt, 1, 12)
[  958.081346] i8042: [239128] 08 <- i8042 (interrupt, 1, 12)
[  958.082372] i8042: [239128] 00 <- i8042 (interrupt, 1, 12)
[  958.083397] i8042: [239128] 00 <- i8042 (interrupt, 1, 12)
[  958.088516] i8042: [239129] 8f <- i8042 (interrupt, 1, 12)
[  958.089543] i8042: [239130] 00 <- i8042 (interrupt, 1, 12)
[  958.090568] i8042: [239130] 00 <- i8042 (interrupt, 1, 12)
[  958.091593] i8042: [239130] 08 <- i8042 (interrupt, 1, 12)
[  958.092620] i8042: [239130] 00 <- i8042 (interrupt, 1, 12)
[  958.093604] i8042: [239131] 00 <- i8042 (interrupt, 1, 12)
[  958.099519] i8042: [239132] 8f <- i8042 (interrupt, 1, 12)
[  958.100544] i8042: [239132] 00 <- i8042 (interrupt, 1, 12)
[  958.101570] i8042: [239133] 00 <- i8042 (interrupt, 1, 12)
[  958.102599] i8042: [239133] 08 <- i8042 (interrupt, 1, 12)
[  958.103624] i8042: [239133] 00 <- i8042 (interrupt, 1, 12)
[  958.104651] i8042: [239133] 00 <- i8042 (interrupt, 1, 12)
[  958.108919] i8042: [239135] 8f <- i8042 (interrupt, 1, 12)
[  958.109944] i8042: [239135] 00 <- i8042 (interrupt, 1, 12)
[  958.110972] i8042: [239135] 00 <- i8042 (interrupt, 1, 12)
[  958.111997] i8042: [239135] 08 <- i8042 (interrupt, 1, 12)
[  958.113026] i8042: [239136] 00 <- i8042 (interrupt, 1, 12)
[  958.114050] i8042: [239136] 00 <- i8042 (interrupt, 1, 12)
[  958.119019] i8042: [239137] 8f <- i8042 (interrupt, 1, 12)
[  958.120056] i8042: [239137] 00 <- i8042 (interrupt, 1, 12)
[  958.121127] i8042: [239138] 00 <- i8042 (interrupt, 1, 12)
[  958.122153] i8042: [239138] 08 <- i8042 (interrupt, 1, 12)
[  958.123180] i8042: [239138] 00 <- i8042 (interrupt, 1, 12)
[  958.124207] i8042: [239138] 00 <- i8042 (interrupt, 1, 12)

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 4/4] input: alps: Fix trackstick detection
  2014-11-09  8:05     ` Dmitry Torokhov
@ 2014-11-09 11:30       ` Pali Rohár
  2014-11-14 11:22         ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-09 11:30 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 2182 bytes --]

On Sunday 09 November 2014 09:05:04 Dmitry Torokhov wrote:
> Hi Pali,
> 
> On Sun, Nov 02, 2014 at 12:25:10AM +0100, Pali Rohár wrote:
> >  int alps_detect(struct psmouse *psmouse, bool
> >  set_properties) {
> > 
> > -	struct alps_data dummy;
> > +	unsigned char e6[4];
> > 
> > -	if (alps_identify(psmouse, &dummy) < 0)
> > -		return -1;
> > +	/*
> > +	 * Try "E6 report".
> > +	 * ALPS should return 0,0,10 or 0,0,100 if no buttons are
> > pressed. +	 * The bits 0-2 of the first byte will be 1s if
> > some buttons are +	 * pressed.
> > +	 */
> > +	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
> > +			 PSMOUSE_CMD_SETSCALE11, e6))
> > +		return -EIO;
> > +
> > +	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 &&
> > e6[2] != 100)) +		return -EINVAL;
> > 
> >  	if (set_properties) {
> > 
> > +		/*
> > +		 * NOTE: To detect model and trackstick presence we 
need
> > to do +		 *       full device reset. To speed up 
detection
> > and prevent +		 *       calling duplicate initialization
> > sequence (both in +		 *       alps_detect() and
> > alps_init()) we set model/protocol +		 *       version and
> > correct name in alps_init() (which will +		 *       do 
full
> > device reset). For now set name to DualPoint. +		 */
> > 
> >  		psmouse->vendor = "ALPS";
> > 
> > -		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
> > -				"DualPoint TouchPad" : "GlidePoint";
> > -		psmouse->model = dummy.proto_version << 8;
> > +		psmouse->name = "DualPoint TouchPad";
> > 
> >  	}
> > 
> > +
> > 
> >  	return 0;
> 
> We can't do this; going by e6 only will give us false
> positives and alps_detect is supposed to be authoritative.
> 
> Thanks.

psmouse-base.c is calling alps_detect() and alps_init() 
consecutively so it does not matter if code is in _detect or 
_init function. Just need to make sure that correct order will be 
used. So this patch could not bring any problems.

If psmouse-base.c detect device false-positive as ALPS (with 
alps_detect()) then it immediately calls alps_init() which fails 
and psmouse-base.c will try to use another protocol.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-11-09 11:22       ` Pali Rohár
@ 2014-11-09 20:34         ` Dmitry Torokhov
  2014-11-10  9:18           ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Dmitry Torokhov @ 2014-11-09 20:34 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

On Sun, Nov 09, 2014 at 12:22:51PM +0100, Pali Rohár wrote:
> On Sunday 09 November 2014 08:50:39 Dmitry Torokhov wrote:
> > Hi Pali,
> > 
> > On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
> > > Sometimes on Dell Latitude laptops psmouse/alps driver
> > > receive invalid ALPS protocol V3 packets with bit7 set in
> > > last byte. More often it can be reproduced on Dell Latitude
> > > E6440 or E7440 with closed lid and pushing cover above
> > > touchpad.
> > > 
> > > If bit7 in last packet byte is set then it is not valid ALPS
> > > packet. I was told that ALPS devices never send these
> > > packets. It is not know yet who send those packets, it
> > > could be Dell EC, bug in BIOS and also bug in touchpad
> > > firmware...
> > > 
> > > With this patch alps driver does not process those invalid
> > > packets and drops it with PSMOUSE_FULL_PACKET so psmouse
> > > driver does not enter to out of sync state.
> > > 
> > > This patch fix problem when psmouse driver still resetting
> > > ALPS device when laptop lid is closed because of receiving
> > > invalid packets in out of sync state.
> > > 
> > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > Cc: stable@vger.kernel.org
> > > ---
> > > 
> > >  drivers/input/mouse/alps.c |   10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > > 
> > > diff --git a/drivers/input/mouse/alps.c
> > > b/drivers/input/mouse/alps.c index 7c47e97..e802d28 100644
> > > --- a/drivers/input/mouse/alps.c
> > > +++ b/drivers/input/mouse/alps.c
> > > @@ -1181,6 +1181,16 @@ static psmouse_ret_t
> > > alps_process_byte(struct psmouse *psmouse)
> > > 
> > >  		return PSMOUSE_BAD_DATA;
> > >  	
> > >  	}
> > > 
> > > +	if (priv->proto_version == ALPS_PROTO_V3 &&
> > > psmouse->pktcnt == psmouse->pktsize) { +		// For protocol
> > > V3, do not process data when last packet's bit7 is set
> > > +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> > > +			psmouse_dbg(psmouse, "v3 discard packet[%i] = 
> %x\n",
> > > +				    psmouse->pktcnt - 1,
> > > +				    psmouse->packet[psmouse->pktcnt - 1]);
> > > +			return PSMOUSE_FULL_PACKET;
> > > +		}
> > > +	}
> > 
> > I wanted to apply it, but I would like some more data. Could
> > you please send me the dmesg with i8042.debug wit this patch
> > in place?
> > 
> > Thanks!
> 
> See attachment. It contains debug log from both i8042.debug=1 and 
> psmouse.ko with applied all 4 patches.

Thank you Pali.

OK, so it looks like the problematic byte is the last one and we should
be resynching right away. With your other patch increasing number of bad
packets before issuing resync this special handling is no longer needed,
right?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
  2014-11-09 20:34         ` Dmitry Torokhov
@ 2014-11-10  9:18           ` Pali Rohár
  0 siblings, 0 replies; 41+ messages in thread
From: Pali Rohár @ 2014-11-10  9:18 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 3246 bytes --]

On Sunday 09 November 2014 21:34:59 Dmitry Torokhov wrote:
> On Sun, Nov 09, 2014 at 12:22:51PM +0100, Pali Rohár wrote:
> > On Sunday 09 November 2014 08:50:39 Dmitry Torokhov wrote:
> > > Hi Pali,
> > > 
> > > On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
> > > > Sometimes on Dell Latitude laptops psmouse/alps driver
> > > > receive invalid ALPS protocol V3 packets with bit7 set
> > > > in last byte. More often it can be reproduced on Dell
> > > > Latitude E6440 or E7440 with closed lid and pushing
> > > > cover above touchpad.
> > > > 
> > > > If bit7 in last packet byte is set then it is not valid
> > > > ALPS packet. I was told that ALPS devices never send
> > > > these packets. It is not know yet who send those
> > > > packets, it could be Dell EC, bug in BIOS and also bug
> > > > in touchpad firmware...
> > > > 
> > > > With this patch alps driver does not process those
> > > > invalid packets and drops it with PSMOUSE_FULL_PACKET
> > > > so psmouse driver does not enter to out of sync state.
> > > > 
> > > > This patch fix problem when psmouse driver still
> > > > resetting ALPS device when laptop lid is closed because
> > > > of receiving invalid packets in out of sync state.
> > > > 
> > > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > > Tested-by: Pali Rohár <pali.rohar@gmail.com>
> > > > Cc: stable@vger.kernel.org
> > > > ---
> > > > 
> > > >  drivers/input/mouse/alps.c |   10 ++++++++++
> > > >  1 file changed, 10 insertions(+)
> > > > 
> > > > diff --git a/drivers/input/mouse/alps.c
> > > > b/drivers/input/mouse/alps.c index 7c47e97..e802d28
> > > > 100644 --- a/drivers/input/mouse/alps.c
> > > > +++ b/drivers/input/mouse/alps.c
> > > > @@ -1181,6 +1181,16 @@ static psmouse_ret_t
> > > > alps_process_byte(struct psmouse *psmouse)
> > > > 
> > > >  		return PSMOUSE_BAD_DATA;
> > > >  	
> > > >  	}
> > > > 
> > > > +	if (priv->proto_version == ALPS_PROTO_V3 &&
> > > > psmouse->pktcnt == psmouse->pktsize) { +		// For
> > > > protocol V3, do not process data when last packet's
> > > > bit7 is set +		if (psmouse->packet[psmouse->pktcnt - 
1]
> > > > & 0x80) { +			psmouse_dbg(psmouse, "v3 discard
> > > > packet[%i] =
> > 
> > %x\n",
> > 
> > > > +				    psmouse->pktcnt - 1,
> > > > +				    psmouse->packet[psmouse->pktcnt - 1]);
> > > > +			return PSMOUSE_FULL_PACKET;
> > > > +		}
> > > > +	}
> > > 
> > > I wanted to apply it, but I would like some more data.
> > > Could you please send me the dmesg with i8042.debug wit
> > > this patch in place?
> > > 
> > > Thanks!
> > 
> > See attachment. It contains debug log from both
> > i8042.debug=1 and psmouse.ko with applied all 4 patches.
> 
> Thank you Pali.
> 
> OK, so it looks like the problematic byte is the last one and
> we should be resynching right away. With your other patch
> increasing number of bad packets before issuing resync this
> special handling is no longer needed, right?
> 
> Thanks.

Problem is that in this special case driver is still out-of-sync 
and cause problems. E.g there is big dmesg flood and it is not 
good to have that when LID is closed for a long time.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 4/4] input: alps: Fix trackstick detection
  2014-11-09 11:30       ` Pali Rohár
@ 2014-11-14 11:22         ` Pali Rohár
  2014-11-14 19:41           ` Pali Rohár
  0 siblings, 1 reply; 41+ messages in thread
From: Pali Rohár @ 2014-11-14 11:22 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 2445 bytes --]

On Sunday 09 November 2014 12:30:03 Pali Rohár wrote:
> On Sunday 09 November 2014 09:05:04 Dmitry Torokhov wrote:
> > Hi Pali,
> > 
> > On Sun, Nov 02, 2014 at 12:25:10AM +0100, Pali Rohár wrote:
> > >  int alps_detect(struct psmouse *psmouse, bool
> > >  set_properties) {
> > > 
> > > -	struct alps_data dummy;
> > > +	unsigned char e6[4];
> > > 
> > > -	if (alps_identify(psmouse, &dummy) < 0)
> > > -		return -1;
> > > +	/*
> > > +	 * Try "E6 report".
> > > +	 * ALPS should return 0,0,10 or 0,0,100 if no buttons
> > > are pressed. +	 * The bits 0-2 of the first byte will be
> > > 1s if some buttons are +	 * pressed.
> > > +	 */
> > > +	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
> > > +			 PSMOUSE_CMD_SETSCALE11, e6))
> > > +		return -EIO;
> > > +
> > > +	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 
&&
> > > e6[2] != 100)) +		return -EINVAL;
> > > 
> > >  	if (set_properties) {
> > > 
> > > +		/*
> > > +		 * NOTE: To detect model and trackstick presence we
> 
> need
> 
> > > to do +		 *       full device reset. To speed up
> 
> detection
> 
> > > and prevent +		 *       calling duplicate 
initialization
> > > sequence (both in +		 *       alps_detect() and
> > > alps_init()) we set model/protocol +		 *       version 
and
> > > correct name in alps_init() (which will +		 *       do
> 
> full
> 
> > > device reset). For now set name to DualPoint. +		 */
> > > 
> > >  		psmouse->vendor = "ALPS";
> > > 
> > > -		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
> > > -				"DualPoint TouchPad" : "GlidePoint";
> > > -		psmouse->model = dummy.proto_version << 8;
> > > +		psmouse->name = "DualPoint TouchPad";
> > > 
> > >  	}
> > > 
> > > +
> > > 
> > >  	return 0;
> > 
> > We can't do this; going by e6 only will give us false
> > positives and alps_detect is supposed to be authoritative.
> > 
> > Thanks.
> 
> psmouse-base.c is calling alps_detect() and alps_init()
> consecutively so it does not matter if code is in _detect or
> _init function. Just need to make sure that correct order will
> be used. So this patch could not bring any problems.
> 
> If psmouse-base.c detect device false-positive as ALPS (with
> alps_detect()) then it immediately calls alps_init() which
> fails and psmouse-base.c will try to use another protocol.

Dmitry: PING
Also see my comment for PATCH v3 3/4.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH v3 4/4] input: alps: Fix trackstick detection
  2014-11-14 11:22         ` Pali Rohár
@ 2014-11-14 19:41           ` Pali Rohár
  0 siblings, 0 replies; 41+ messages in thread
From: Pali Rohár @ 2014-11-14 19:41 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input, linux-kernel

[-- Attachment #1: Type: Text/Plain, Size: 2836 bytes --]

On Friday 14 November 2014 12:22:33 Pali Rohár wrote:
> On Sunday 09 November 2014 12:30:03 Pali Rohár wrote:
> > On Sunday 09 November 2014 09:05:04 Dmitry Torokhov wrote:
> > > Hi Pali,
> > > 
> > > On Sun, Nov 02, 2014 at 12:25:10AM +0100, Pali Rohár wrote:
> > > >  int alps_detect(struct psmouse *psmouse, bool
> > > >  set_properties) {
> > > > 
> > > > -	struct alps_data dummy;
> > > > +	unsigned char e6[4];
> > > > 
> > > > -	if (alps_identify(psmouse, &dummy) < 0)
> > > > -		return -1;
> > > > +	/*
> > > > +	 * Try "E6 report".
> > > > +	 * ALPS should return 0,0,10 or 0,0,100 if no buttons
> > > > are pressed. +	 * The bits 0-2 of the first byte will be
> > > > 1s if some buttons are +	 * pressed.
> > > > +	 */
> > > > +	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
> > > > +			 PSMOUSE_CMD_SETSCALE11, e6))
> > > > +		return -EIO;
> > > > +
> > > > +	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10
> 
> &&
> 
> > > > e6[2] != 100)) +		return -EINVAL;
> > > > 
> > > >  	if (set_properties) {
> > > > 
> > > > +		/*
> > > > +		 * NOTE: To detect model and trackstick presence we
> > 
> > need
> > 
> > > > to do +		 *       full device reset. To speed up
> > 
> > detection
> > 
> > > > and prevent +		 *       calling duplicate
> 
> initialization
> 
> > > > sequence (both in +		 *       alps_detect() and
> > > > alps_init()) we set model/protocol +		 *       version
> 
> and
> 
> > > > correct name in alps_init() (which will +		 *       
do
> > 
> > full
> > 
> > > > device reset). For now set name to DualPoint. +		 */
> > > > 
> > > >  		psmouse->vendor = "ALPS";
> > > > 
> > > > -		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
> > > > -				"DualPoint TouchPad" : "GlidePoint";
> > > > -		psmouse->model = dummy.proto_version << 8;
> > > > +		psmouse->name = "DualPoint TouchPad";
> > > > 
> > > >  	}
> > > > 
> > > > +
> > > > 
> > > >  	return 0;
> > > 
> > > We can't do this; going by e6 only will give us false
> > > positives and alps_detect is supposed to be authoritative.
> > > 
> > > Thanks.
> > 
> > psmouse-base.c is calling alps_detect() and alps_init()
> > consecutively so it does not matter if code is in _detect or
> > _init function. Just need to make sure that correct order
> > will be used. So this patch could not bring any problems.
> > 
> > If psmouse-base.c detect device false-positive as ALPS (with
> > alps_detect()) then it immediately calls alps_init() which
> > fails and psmouse-base.c will try to use another protocol.
> 
> Dmitry: PING
> Also see my comment for PATCH v3 3/4.

Dmitry, finally I split this big patch into more smaller and 
tried to fix what you did not like. I sent new series of patches, 
so drop this one 4/4.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2014-11-14 19:41 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-03  9:43 [PATCH 0/3] input: alps: Fixes for ALPS driver Pali Rohár
2014-10-03  9:43 ` [PATCH 1/3] input: alps: Reset mouse before identifying it Pali Rohár
2014-10-03  9:47   ` Hans de Goede
2014-10-14  6:08     ` Dmitry Torokhov
2014-10-15 12:53       ` Pali Rohár
2014-10-15 17:43         ` Dmitry Torokhov
2014-10-15 17:57           ` Pali Rohár
2014-10-15 18:00             ` Dmitry Torokhov
2014-10-15 18:10               ` Pali Rohár
2014-10-15 18:22                 ` Dmitry Torokhov
2014-10-19 11:07                   ` Pali Rohár
2014-10-23 15:44                     ` Dmitry Torokhov
2014-11-01 23:29                       ` Pali Rohár
2014-10-03  9:43 ` [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
2014-10-03  9:51   ` Hans de Goede
2014-10-03  9:58     ` Pali Rohár
2014-10-03 10:01       ` Hans de Goede
2014-10-03  9:43 ` [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet Pali Rohár
2014-10-03  9:55   ` Hans de Goede
2014-10-03 10:05     ` Pali Rohár
2014-10-03 10:18       ` Hans de Goede
2014-10-03 10:23         ` Pali Rohár
2014-10-03 11:03           ` Hans de Goede
2014-10-03 12:04             ` Hans de Goede
2014-11-01 23:25 ` [PATCH v3 0/4] Fixes for ALPS driver Pali Rohár
2014-11-01 23:25   ` [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync Pali Rohár
2014-11-08 20:52     ` Dmitry Torokhov
2014-11-01 23:25   ` [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device Pali Rohár
2014-11-08 21:00     ` Dmitry Torokhov
2014-11-01 23:25   ` [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set Pali Rohár
2014-11-09  7:50     ` Dmitry Torokhov
2014-11-09 11:22       ` Pali Rohár
2014-11-09 20:34         ` Dmitry Torokhov
2014-11-10  9:18           ` Pali Rohár
2014-11-01 23:25   ` [PATCH v3 4/4] input: alps: Fix trackstick detection Pali Rohár
2014-11-09  8:05     ` Dmitry Torokhov
2014-11-09 11:30       ` Pali Rohár
2014-11-14 11:22         ` Pali Rohár
2014-11-14 19:41           ` Pali Rohár
2014-11-02 14:14   ` [PATCH v3 0/4] Fixes for ALPS driver Hans de Goede
2014-11-06 17:46     ` Pali Rohár

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).