Bug 114321

Summary: Lenovo T460s reports incorrect release events
Product: Drivers Reporter: Ingo Bürk (ingo+kernel)
Component: Input DevicesAssignee: drivers_input-devices
Status: NEW ---    
Severity: high CC: alex+kernel, benjamin.tissoires, d.r.vanrossum, dmitry.torokhov, jlp, jwrdegoede, kernel.org-bugzilla, linux-kernel, marco, mczubak, r.w.grimmett, sjensen+kernel, warren
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.5.0 Subsystem:
Regression: No Bisected commit-id:
Attachments: 0001-Input-synaptics-handle-spurious-release-of-trackstic.patch

Description Ingo Bürk 2016-03-10 22:03:36 UTC
For the new Lenovo T460s, the kernel always reports both a press and a release event for the physical Trackpoint mouse buttons (above the touchpad), even if the button is pressed and held down. A tap-and-hold on the touchpad works as expected.

This prevents, for example, drag and drop to work unless you use the touchpad to hold the click. This and other usecases makes this a really annoying bug and it seems to affect multiple users, see [1].

I have run a test using evtest that proves that it isn't a userspace driver bug, but is actually reported like this from the kernel itself.

[1] https://bbs.archlinux.org/viewtopic.php?pid=1611391#p1611391
Comment 1 Ingo Bürk 2016-03-10 22:06:37 UTC
This is the part of dmesg where the touchpad is identified, although I'm not sure that's helpful since the culprit seems to be the Trackpoint, not the touchpad:

[    2.467735] psmouse serio1: synaptics: queried max coordinates: x [..5676], y [..4762]
[    2.502603] psmouse serio1: synaptics: queried min coordinates: x [1266..], y [1094..]
[    2.570928] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2, id: 0x1e2b1, caps: 0xf003a3/0x943300/0x12e800/0x10000, board id: 3145, fw id: 2073050
[    2.570950] psmouse serio1: synaptics: serio: Synaptics pass-through port at isa0060/serio1/input0
[    2.614172] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
[    2.619305] mousedev: PS/2 mouse device common for all mice
Comment 2 Ingo Bürk 2016-03-10 22:34:10 UTC
Reloading psmouse with proto=imps makes the buttons work correctly again, but of course at the usual loss of acceleration and gestures.
Comment 3 Alex Palaistras 2016-03-13 14:36:53 UTC
Confirming on a T460 as well. Running `xev` shows ButtonPress and ButtonRelease events simultaneously for the trackpoint buttons, while touchpad buttons work correctly.
Comment 4 Benjamin Tissoires 2016-03-14 18:39:35 UTC
Created attachment 209131 [details]
0001-Input-synaptics-handle-spurious-release-of-trackstic.patch

Can you test if the attached patch works?
If it fixes the bug, we might also check that the other quirks we have for the FW 8.1 are needed or not in the FW 8.2 :(
Comment 5 Ingo Bürk 2016-03-14 18:42:05 UTC
I will be out of reach of my T460s for the next two weeks, so if someone else can test it, that'd be great. Otherwise I will be happy to test it and give you feedback. Thanks for the effort!
Comment 6 Benjamin Tissoires 2016-03-14 20:37:24 UTC
I asked a colleague who had access to a t460s, and she said the fix works. I'll send it properly upstream tomorrow.
Comment 7 Jeppe Ledet-Pedersen 2016-03-14 21:41:03 UTC
Yes, I can also confirm it works for me on top of v4.5. If I can help test those other FW 8.1 quirks, let me know. Thanks!
Comment 8 Benjamin Tissoires 2016-03-15 09:50:16 UTC
(In reply to Jeppe Ledet-Pedersen from comment #7)
> Yes, I can also confirm it works for me on top of v4.5. If I can help test
> those other FW 8.1 quirks, let me know. Thanks!

Great, thanks. I'll send the patch today after a few tests.

Regarding the other quirks, a thorough look at it showed that we should be fine. The other 8.1 quirk was regarding the queried min coordinate, but it looks like the t460 has the capability bit correctly set as we have the info in the dmesg.

I hope we did not overlooked any other problems...
Comment 9 Warren Togami 2016-03-16 00:53:51 UTC
Confirmed: The patch in attachment 209131 [details] fixes the issue for my Thinkpad T460s with Fedora kernel-4.4.5-300.fc23.x86_64.

I assume you're handling this to go into the upstream kernel?  Does this fix qualify for stable update kernels too?
Comment 10 Benjamin Tissoires 2016-03-16 08:32:02 UTC
(In reply to Warren Togami from comment #9)
> Confirmed: The patch in attachment 209131 [details] fixes the issue for my
> Thinkpad T460s with Fedora kernel-4.4.5-300.fc23.x86_64.

Thanks

> I assume you're handling this to go into the upstream kernel?  Does this fix
> qualify for stable update kernels too?

Yes, and yes, I think so. When this got accepted by Dmitry, I'll try to push it in the Fedora kernel too while I am at it :)
Comment 11 Alexander Neumann 2016-03-21 18:25:09 UTC
(In reply to Benjamin Tissoires from comment #10)
> (In reply to Warren Togami from comment #9)
> > Confirmed: The patch in attachment 209131 [details] fixes the issue for my
> > Thinkpad T460s with Fedora kernel-4.4.5-300.fc23.x86_64.

I'm currently running 4.5 with this patch. It mostly fixes the issue, but sometimes I'm experiencing that the release event is not sent at all, so the system behaves as if the trackpoint button is still pressed. This is really annoying, and pressing the button again does not fix it. After a while it goes away.

Is there anything I can test?

Hardware: Thinkpad t460p.
Comment 12 Alexander Neumann 2016-03-22 11:43:31 UTC
(In reply to Alexander Neumann from comment #11)
> (In reply to Benjamin Tissoires from comment #10)
> > (In reply to Warren Togami from comment #9)
> > > Confirmed: The patch in attachment 209131 [details] fixes the issue for
> my
> > > Thinkpad T460s with Fedora kernel-4.4.5-300.fc23.x86_64.
> 
> I'm currently running 4.5 with this patch. It mostly fixes the issue, but
> sometimes I'm experiencing that the release event is not sent at all, so the
> system behaves as if the trackpoint button is still pressed. This is really
> annoying, and pressing the button again does not fix it. After a while it
> goes away.

It seems that this behavior was caused by a function of the touchpad, activated accidentally with the palm. I've disabled the touchpad with 'synclient touchpadoff=1' for now, since then it did not occur any more.

In conclusion, the patch works for me, thanks!
Comment 13 Ingo Bürk 2016-03-28 16:58:31 UTC
I'm finally in reach of my T460s again and since I opened the report, I feel like next to everyone else I should also confirm: seems to work for me. Thanks. :)
Comment 14 C. Scott Ananian 2016-05-11 16:21:50 UTC
I'm running debian 4.5.0-1-amd64 which I'm pretty sure has the patch (I used `apt-get source` to check).  It seems to work well *except* I'm still getting anomalous behavior which seems like a "stuck button".  It's usually the left/primary mouse button that gets stuck, but that may just be an artifact of the fact that it's the one I use most.

Anyone else seeing this?  Any ideas on debugging (maybe I can run evtest in the background until I see the bug appear and then dig into the trace?).
Comment 15 Benjamin Tissoires 2016-05-31 15:11:27 UTC
(In reply to C. Scott Ananian from comment #14)
> I'm running debian 4.5.0-1-amd64 which I'm pretty sure has the patch (I used
> `apt-get source` to check).  It seems to work well *except* I'm still
> getting anomalous behavior which seems like a "stuck button".  It's usually
> the left/primary mouse button that gets stuck, but that may just be an
> artifact of the fact that it's the one I use most.
> 
> Anyone else seeing this?  Any ideas on debugging (maybe I can run evtest in
> the background until I see the bug appear and then dig into the trace?).

FYI, we have been reported a bug where the touchpad interfere with the trackstick buttons here: https://bugs.freedesktop.org/show_bug.cgi?id=96267

If you have disabled the touchpad but are using the trackstick while your palm rest on the touchpad, then you are seeing this one.

I think the only solution for these stuck button is to use RMI4 over SMBus but I need to first get the SMBus Host Notify feature accepted first.
Comment 16 r.w.grimmett 2016-08-05 13:44:33 UTC
I am pretty certain that this is not a Kernel issue.
Did a reinstall on my thinkpad t550 of Debian stretch and discovered this middle button hold being seen as click issue.

Holding down the button was seen just a a click and alt middle click resizing of windows didn't work.

Prior to installing Stretch it was running Debian stable Jessie with kernel 4.6.3 among others and the issue was not there.

To test if this was a kernel issue I installed some of the kernels I had previously not had the issue with under Jessie on Stretch and issue did not go away.

To remedy the situation I have reinstalled Jessie and have satisfied myself that it is not a kernel issue by installing the exact same 4.7 kernel built on Stretch and my middle mouse button still works.

My guess is that it is something in xorg or udev that is messing with our middle buttons.

Hope this assists somehow.
Comment 17 Benjamin Tissoires 2016-08-09 10:30:48 UTC
The initial bug report (incorrect release events on the t460s) has been fixed in kernel v4.6 with 82be788 ("Input: synaptics - handle spurious release of trackstick buttons, again").

Can someone please close this bug as resolved?


(In reply to r.w.grimmett from comment #16)
> I am pretty certain that this is not a Kernel issue.

The initial problem was.

> Did a reinstall on my thinkpad t550 of Debian stretch and discovered this
> middle button hold being seen as click issue.
> 
> Holding down the button was seen just a a click and alt middle click
> resizing of windows didn't work.
> 
> Prior to installing Stretch it was running Debian stable Jessie with kernel
> 4.6.3 among others and the issue was not there.
> 
> To test if this was a kernel issue I installed some of the kernels I had
> previously not had the issue with under Jessie on Stretch and issue did not
> go away.
> 
> To remedy the situation I have reinstalled Jessie and have satisfied myself
> that it is not a kernel issue by installing the exact same 4.7 kernel built
> on Stretch and my middle mouse button still works.
> 
> My guess is that it is something in xorg or udev that is messing with our
> middle buttons.

I am pretty sure you are being messed up by the scroll emulation of the trackpad. The physical buttons above the trackpad are supposed to be used with the trackpad. Historically, the scroll emulation has always been hold middle button and move the trackstick up and down. It has been added in libinput, but can be removed by changing the scroll method through xinput (or a xorg snippet). The name of the property is "libinput Scroll method Enabled".