This service will be undergoing maintenance at 00:00 UTC, 2016-08-01. It is expected to last about 1 hours

Bug 1048314

Summary: Dell XPS13 (Haswell generation) has ephemeral mouse devices under kernels > 3.11.10-301
Product: [Fedora] Fedora Reporter: Trevor Vaughan <tvaughan>
Component: kernelAssignee: Benjamin Tissoires <btissoir>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 20CC: awilliam, btissoir, emrecio, gansalmon, itamar, jonathan, jwboyer, kazade, kernel-maint, madhu.chinakonda, major, markd, matthew.hirsch, rdieter, sergio
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: kernel-3.13.11-100.fc19 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-04-18 11:35:38 EDT Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Attachments:
Description Flags
/sys/class/input/mouse*/device/uevent information
none
evemu-describe output for comment 15
none
evemu-record output for comment 15
none
hid-rmi backport for 3.13.y none

Description Trevor Vaughan 2014-01-03 12:11:49 EST
Created attachment 845030 [details]
/sys/class/input/mouse*/device/uevent information

Description of problem:

Using kernel 3.11.10-301, the touchscreen and touchpad devices on the Dell XPS13 are recognized properly. However, upon kernel upgrade, there is an additional mouse device added to the system which appears to relate to the touchpad without actually being a touchpad device.

In Gnome, this causes the mouse and touchpad interface to show both a mouse device and a touchpad device. However, the touchpad controls do not affect the touchpad properly.


Version-Release number of selected component (if applicable):

Works: 3.11.10-301
Fails: Any 3.12 or higher kernel

How reproducible:

Upgrade to the 3.12 kernel and reboot. Attempt to change settings in the Gnome interface.


Actual results:

Touchpad controls do not affect the touchpad.

Expected results:

Touchpad controls affect the touchpad.

Additional info:

I have attached the relevant information from /sys/class/input/mouse*/device/uevent under the differing kernels.
Comment 1 Benjamin Tissoires 2014-01-06 17:08:12 EST
The new XPS 13 has a Synaptics touchpad which can act in both PS/2 and HID over I2C mode. If during the initialization the system sends i2c commands, it switches to i2c and drops the ps/2 interface.

There are several problem currently:
- Synaptics is pushing a proper hid driver for this touchpad, but the road is still long
- In i2c (hid) mode, the touchpad acts like a mouse.
- I still don't get why this problem does not show under a 3.11 kernel (there must have been some changes I was not aware in the ACPI implementation).

On Launchpad, (bug #1218973), the reporter said that blacklisting i2c-hid was doing the trick for the touchpad, but broke the touchscreen. According to your report, the touchscreen on the XPS 13 is connected through USB so I assume that blacklisting i2c-hid will work until a proper upstream solution is found.
Comment 2 Trevor Vaughan 2014-01-06 17:29:58 EST
Thanks for the quick response.

I tested blacklisting i2c-hid and you are correct that this both fixes the touchpad and leaves the touchscreen properly working.

For those following along at home with the same bug:

As root:

1. Open /etc/modprobe.d/blacklist.conf in your favorite text editor.
2. Add the line 'blacklist i2c-hid' (no quotes)
3. Save and reboot

Appreciate the quick response.

Feel free to close as appropriate.
Comment 3 Justin M. Forbes 2014-02-24 08:53:56 EST
*********** MASS BUG UPDATE **************

We apologize for the inconvenience.  There is a large number of bugs to go through and several of them have gone stale.  Due to this, we are doing a mass bug update across all of the Fedora 20 kernel bugs.

Fedora 20 has now been rebased to 3.13.4-200.fc20.  Please test this kernel update and let us know if you issue has been resolved or if it is still present with the newer kernel.

If you experience different issues, please open a new bug report for those.
Comment 4 Trevor Vaughan 2014-02-27 21:22:43 EST
Not a problem.

So, this seems to have partially fixed the issue.

With i2c-hid blacklisted, everything still works properly.

However, natively, the touchpad now appears properly in all interfaces but two finger scrolling, double clicking, and pasting do not work.

Thanks
Comment 5 Mark Davidson 2014-03-15 21:09:21 EDT
The ic2-hid blacklist works for me too and also fixes Bug 1074910

It might be an interaction with the move of the i2c code in the acpi driver to the i2c driver:
https://github.com/torvalds/linux/commit/55e71edb81b2b45273e7b284cce13ff24bde846f
Comment 6 Benjamin Tissoires 2014-03-16 09:24:00 EDT
*** Bug 1074910 has been marked as a duplicate of this bug. ***
Comment 7 Benjamin Tissoires 2014-03-16 09:27:44 EDT
Mark, you spotted the right commit which introduced this regression. Still, having i2c-hid is a good think to make touchscreen and sensors working.
The Synaptics problem is a corner case.
I'll see if I can get a temporary solution until Synaptics' work on RMI4 land in upstream.
Comment 8 Benjamin Tissoires 2014-03-31 17:08:57 EDT
I got something up which may worth testing:
remove the i2c-hid blacklist,
grab the code at https://github.com/bentiss/hid-rmi
make
sudo make install
reboot

if everything went fine, you should have hid-rmi probed and it should discover the functions and bind the device.

This is HIGHLY experimental (though I am still confident it will not break the laptop), and I would like to get some feedbacks for it.

If it binds correctly and we get something working (with suspend/resume too), then I'll submit this as a temporary fix until the proper RMI4 implementation is accepted upstream.
Comment 9 Mark Davidson 2014-03-31 19:53:32 EDT
Sorry, I must be missing something.

I get the following during the make

$ make
make -C /lib/modules/3.13.7-200.fc20.x86_64/build SUBDIRS=/home/markd/git/hid-rmi modules
make[1]: Entering directory `/usr/src/kernels/3.13.7-200.fc20.x86_64'
  CC [M]  /home/markd/git/hid-rmi/hid-rmi.o
/home/markd/git/hid-rmi/hid-rmi.c: In function ‘rmi_set_mode’:
/home/markd/git/hid-rmi/hid-rmi.c:168:2: error: implicit declaration of function ‘hid_hw_raw_request’ [-Werror=implicit-function-declaration]
  ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, txbuf,
  ^
/home/markd/git/hid-rmi/hid-rmi.c: In function ‘rmi_write_report’:
/home/markd/git/hid-rmi/hid-rmi.c:183:2: error: implicit declaration of function ‘hid_hw_output_report’ [-Werror=implicit-function-declaration]
  ret = hid_hw_output_report(hdev, (void *)report, len);
  ^
/home/markd/git/hid-rmi/hid-rmi.c: At top level:
/home/markd/git/hid-rmi/hid-rmi.c:864:2: error: implicit declaration of function ‘HID_I2C_DEVICE’ [-Werror=implicit-function-declaration]
  { HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, HID_ANY_ID) },
  ^
/home/markd/git/hid-rmi/hid-rmi.c:864:2: error: initializer element is not constant
/home/markd/git/hid-rmi/hid-rmi.c:864:2: error: (near initialization for ‘rmi_id[0].bus’)
cc1: some warnings being treated as errors
make[2]: *** [/home/markd/git/hid-rmi/hid-rmi.o] Error 1
make[1]: *** [_module_/home/markd/git/hid-rmi] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.13.7-200.fc20.x86_64'
make: *** [default] Error 2
Comment 10 Benjamin Tissoires 2014-04-01 12:58:32 EDT
Sorry, my bad. I played with next development kernels tree and forgot to test on Fedora kernel.

I have updated the git tree, so pull it again and give a shot.
Thanks
Comment 11 Mark Davidson 2014-04-01 18:16:30 EDT
Gave it a quick try, initially the mouse and touchpad worked correctly after reboot. I then tried suspending the laptop. After resume the desktop was not restored - had a black screen with a mouse pointer and nothing else.
So I uninstalled and put the blacklist back.

Is there any other useful info I can get for you.
Comment 12 Benjamin Tissoires 2014-04-02 15:43:43 EDT
Thanks for the test. At least, the code works before suspend (it was not 100% sure given that I only have a prototype from Synaptics and not the actual laptop).

The black screen with mouse pointer needs to be debugged.
Is the mouse moving with the touchpad or is the laptop completely broken?
I will need the dmesg output after the resume, and also the Xorg.0.log.

If the kernel oopses, you may be able to get the info in the previous boot journalctl and in Xorg.0.log.old.
Comment 13 Mark Davidson 2014-04-02 16:32:38 EDT
Tried it more extensively tonight. I can't get the black screen to happen again (it was just the screen, I used function keys to get to a text logon and fix it).

I've removed the patched driver and the blacklist to make sure I had the problem, then installed it. 

Touchpad works fine, then I suspended and everything worked after resuming.

Did several suspend resume cycles - worked every time.

I'll keep the patched driver on and see if anything else happens.

Looking at dmesg the Touchpad is reported as a PS2:
$ dmesg | grep -i touchpad
[    2.016826] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd40123/0x840300/0x126800, board id: 2734, fw id: 1522295
[    2.087712] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input5
[  383.341127] input: PS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input21

and the i2c_hid fails to talk to a device:
$ dmesg | grep i2c
[    3.959897] i2c_hid i2c-DLL060A:00: failed to retrieve report from device.
[    3.959975] input: DLL060A:00 06CB:2734 as /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/input/input7
[    4.463097] input: DLL060A:00 06CB:2734 as /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/input/input16

Is that what you expected?
Comment 14 Benjamin Tissoires 2014-04-02 16:44:40 EDT
(In reply to Mark Davidson from comment #13)
> Touchpad works fine, then I suspended and everything worked after resuming.
> 
> Did several suspend resume cycles - worked every time.

nice!

> Looking at dmesg the Touchpad is reported as a PS2:
> $ dmesg | grep -i touchpad
> [    2.016826] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id:
> 0x1e2b1, caps: 0xd40123/0x840300/0x126800, board id: 2734, fw id: 1522295
> [    2.087712] input: SynPS/2 Synaptics TouchPad as
> /devices/platform/i8042/serio1/input/input5
> [  383.341127] input: PS/2 Synaptics TouchPad as
> /devices/platform/i8042/serio1/input/input21

Yeah, we will have to do something for not having the PS/2 interface to try to use the touchpad...

> 
> and the i2c_hid fails to talk to a device:

actually it's working:

> $ dmesg | grep i2c
> [    3.959897] i2c_hid i2c-DLL060A:00: failed to retrieve report from device.

this can be ignored.

> [    3.959975] input: DLL060A:00 06CB:2734 as
> /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/input/input7
> [    4.463097] input: DLL060A:00 06CB:2734 as
> /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/input/input16

2 input devices are created.

> 
> Is that what you expected?

Kind of.

just to be sure, can you provide one evemu-record for the "DLL060A:00 06CB:2734"?

you should get a lot of ABS_MT_* events, and the "SynPS/2 Synaptics TouchPad" event node should be silent when you touch it.
Comment 15 Mark Davidson 2014-04-03 19:52:12 EDT
I got the input device for "DLL060A:00 06CB:2734" from /proc/bus/input/devices

I then VT-switched to a terminal to do a evemu-record (It is grabbed under X)

I'm attaching hid-rmi.test.desc and hid-rmi.test.events
Comment 16 Mark Davidson 2014-04-03 19:56:12 EDT
Created attachment 882475 [details]
evemu-describe output for comment 15
Comment 17 Mark Davidson 2014-04-03 19:57:04 EDT
Created attachment 882476 [details]
evemu-record output for comment 15
Comment 18 Benjamin Tissoires 2014-04-09 13:13:46 EDT
Created attachment 884591 [details]
hid-rmi backport for 3.13.y

Here is a backport of the rmi driver to be included in 3.16.
The backport is a squash of:
https://patchwork.kernel.org/patch/3946591/
and
https://patchwork.kernel.org/patch/3956041/

plus one extra header to backport the new transport driver for the HID subsystem.
Comment 19 Benjamin Tissoires 2014-04-09 13:17:56 EDT
Josh, can you consider including the backport in comment #18 in f20 and f21?

Thanks
Comment 20 Josh Boyer 2014-04-10 09:42:12 EDT
(In reply to Benjamin Tissoires from comment #19)
> Josh, can you consider including the backport in comment #18 in f20 and f21?
> 
> Thanks

Yep.  Unless you say otherwise, I'll include F19 since it's on 3.13.y as well.
Comment 21 Josh Boyer 2014-04-10 14:08:05 EDT
Added in Fedora git and will be in the next builds on each branch.
Comment 22 Fedora Update System 2014-04-14 23:35:57 EDT
kernel-3.13.10-200.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/kernel-3.13.10-200.fc20
Comment 23 Fedora Update System 2014-04-14 23:44:58 EDT
kernel-3.13.10-100.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/kernel-3.13.10-100.fc19
Comment 24 Fedora Update System 2014-04-16 05:24:02 EDT
Package kernel-3.13.10-100.fc19:
* should fix your issue,
* was pushed to the Fedora 19 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing kernel-3.13.10-100.fc19'
as soon as you are able to, then reboot.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2014-5233/kernel-3.13.10-100.fc19
then log in and leave karma (feedback).
Comment 25 Adam Williamson 2014-04-16 21:04:04 EDT
FWIW, this driver seems to be breaking touch input on my tablet:

https://bugzilla.kernel.org/show_bug.cgi?id=74241
Comment 26 Fedora Update System 2014-04-18 11:35:38 EDT
kernel-3.13.10-200.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 27 Fedora Update System 2014-04-24 14:16:13 EDT
kernel-3.13.11-100.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/kernel-3.13.11-100.fc19
Comment 28 Fedora Update System 2014-05-05 23:31:12 EDT
kernel-3.13.11-100.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 29 EMR_Fedora 2014-11-03 20:26:26 EST
Problem is still persistent on Linux host-01 3.16.6-203.fc20.x86_64 #1 SMP Sat Oct 25 12:44:32 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

HP EliteBook 8440p: buttons work OK, but tap to click does not.
Comment 30 Matt Hirsch 2014-11-24 06:50:02 EST
I have a dell inspiron 13 7000 series. It has one of these new synaptics touchpad that are described above, with both a ps2 and hid mode. I'm running Fedora 21, kernel-3.17.3-300.fc21.x86_64. If I blacklist the i2c_hid module, the trackpad works as expected, and I can also use the touchscreen.

Hoever, I can't properly suspend the system. It immediately wakes up again. If I insert the i2c_hid module, I can suspend the system properly, but I cannot right click by pressing in the bottom right of the trackpad -- I have to press with two fingers.