Message ID | 1412329392-5580-4-git-send-email-pali.rohar@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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
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 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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.
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 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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: