Bug 103952

Summary: Lenovo G50-45 ETPS/2 Elantech Touchpad strange behavior.
Product: Wayland Reporter: Przemek <soprwa>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: medium CC: benjamin.tissoires, peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu-record output
kernel config
dmesg output
finger pressure map over time
full dmidecode output
dmesg output after patches

Description Przemek 2017-11-28 10:21:11 UTC
Hello,
I am using Gentoo linux ~amd64 on Lenovo G50-45 netbook, libinput version 1.9.2 with xorg-server, openrc end eudev.

Touchpad on this machine is ETPS/2 Elantech Touchpad.

Dmesg:
<code>[    5.299695] psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x594f03)
[    5.315883] psmouse serio1: elantech: Synaptics capabilities query result 0x70, 0x15, 0x0a.
[    5.331788] psmouse serio1: elantech: Elan sample query result 05, 20, 97
</code>

Sometimes it gets real freaky and unpredictable, as some "future" has been turned on. During that "phase" when I'm trying to use touchpad pointer jumps all over the screen and triggers clicks, totally random. Moreover I have observed that it is enough just to hover finger over the touchpad (do not touching its surface) to move the pointer. You have to wait couple of seconds to tochpad comes down.

I have also measured its surface with calipers and real dimensions are 110x54mm when reported by "libinput list-devices" - 96x47mm.

<code>Device:           ETPS/2 Elantech Touchpad
Kernel:           /dev/input/event9
Group:            7
Seat:             seat0, default
Size:             96x47mm
Capabilities:     pointer gesture
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    none
Disable-w-typing: enabled
Accel profiles:   none
Rotation:         n/a</code>

Output from "touchpad-edge-detector" command:
<code>eclipse /home/ja # touchpad-edge-detector 110x54 /dev/input/event9
Touchpad ETPS/2 Elantech Touchpad on /dev/input/event9
Move one finger around the touchpad to detect the actual edges
Kernel says:    x [0..3082], y [0..1508]
Touchpad sends: x [50..3061], y [9..1500] /^C

Touchpad size as listed by the kernel: 96x47mm
User-specified touchpad size: 110x54mm
Calculated ranges: 3011/1491

Suggested udev rule:
# <Laptop model description goes here>
evdev:name:ETPS/2 Elantech Touchpad:dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:*
 EVDEV_ABS_00=50:3061:27
 EVDEV_ABS_01=9:1500:28
 EVDEV_ABS_35=50:3061:27
 EVDEV_ABS_36=9:1500:28</code>

Output from "libinput measure touchpad-pressure":
<code>libinput measure touchpad-pressure             
Ready for recording data.
Pressure range used: 8:10
Palm pressure range used: 130
Place a single finger on the touchpad to measure pressure values.
Ctrl+C to exit

Sequence 926 pressure: min:  26 max:  34 avg:  30 median:  31 tags: down
Sequence 927 pressure: min:  30 max:  33 avg:  31 median:  31 tags: down
Sequence 928 pressure: min:  26 max:  35 avg:  30 median:  31 tags: down
Sequence 929 pressure: min:  30 max:  37 avg:  34 median:  35 tags: down
Sequence 930 pressure: min:  26 max:  37 avg:  31 median:  33 tags: down
Sequence 931 pressure: min:  11 max:  34 avg:  25 median:  27 tags: down
Sequence 932 pressure: min:  34 max:  44 avg:  39 median:  40 tags: down
Sequence 933 pressure: min:  25 max:  33 avg:  28 median:  29 tags: down
Sequence 934 pressure: min:  30 max:  35 avg:  33 median:  34 tags: down
Sequence 935 pressure: min:  30 max:  35 avg:  32 median:  33 tags: down
Sequence 936 pressure: min:  26 max:  27 avg:  26 median:  26 tags: down
Sequence 937 pressure: min:  29 max:  33 avg:  30 median:  31 tags: down
Sequence 938 pressure: min:   8 max:  33 avg:  21 median:  23 tags: down
Sequence 939 pressure: min:  33 max:  37 avg:  35 median:  35 tags: down
Sequence 940 pressure: min:  36 max:  41 avg:  38 median:  39 tags: down
Sequence 941 pressure: min:  37 max:  40 avg:  38 median:  39 tags: down
Sequence 942 pressure: min:   5 max:  31 avg:  18 median:  18 tags: down
Sequence 943 pressure: min:  10 max:  27 avg:  18 median:  19 tags: down
Sequence 944 pressure: min:   5 max:  37 avg:  22 median:  26 tags: down
Sequence 945 pressure: min:  31 max:  39 avg:  35 median:  36 tags: down
Sequence 946 pressure: min:  31 max:  35 avg:  33 median:  34 tags: down
Sequence 947 pressure: min:  29 max:  33 avg:  30 median:  31 tags: down</code>

I have fallowed by <code>https://wayland.freedesktop.org/libinput/doc/latest/touchpad_pressure.html#touchpad_pressure_hwdb</code> , and was trying to test settings with new thresholds i.e. 15:10, but:
<code>libinput measure touchpad-pressure --touch-thresholds=15:10 /dev/input/event9
libinput-measure: unrecognized option '--touch-thresholds=15:10'
Usage: libinput measure [--help] <feature> [/dev/input/event0]</code>
Than i was trying to manually apply rules editing "/lib/udev/hwdb.d/90-libinput-model-quirks.hwdb" by:
<code>libinput:name:*ETPS/2 Elantech Touchpad*:dmi:*svnLENOVO:pn80E3:*
 LIBINPUT_ATTR_PRESSURE_RANGE=15:10</code>

And "/lib/udev/hwdb.d/70-evdev.hwdb" by:
<code># Lenovo G50-45
evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnLENOVO:*pvrLenovoG50-45*
 EVDEV_ABS_00=11:3060:32
 EVDEV_ABS_01=14:1502:32
 EVDEV_ABS_35=11:3060:32
 EVDEV_ABS_36=14:1502:32</code>

Unfortunately, after rebooting "udevadm test /sys/class/input/event9" reports"
<code>eclipse /home/ja # udevadm test /sys/class/input/event9
calling: test
version 3.2.5
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          3
file size:         7635386 bytes
header size             80 bytes
strings            1927186 bytes
nodes              5708120 bytes
Load module index
timestamp of '/etc/udev/rules.d' changed
timestamp of '/lib/udev/rules.d' changed
timestamp of '/run/udev/rules.d' changed
Reading rules file: /lib64/udev/rules.d/10-dm.rules
Reading rules file: /lib64/udev/rules.d/11-dm-lvm.rules
Reading rules file: /lib64/udev/rules.d/13-dm-disk.rules
Reading rules file: /lib64/udev/rules.d/40-gentoo.rules
Reading rules file: /lib64/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /lib64/udev/rules.d/41-libsane.rules
Reading rules file: /lib64/udev/rules.d/50-udev-default.rules
Reading rules file: /etc/udev/rules.d/51-android.rules
Reading rules file: /lib64/udev/rules.d/60-block.rules
Reading rules file: /lib64/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib64/udev/rules.d/60-drm.rules
Reading rules file: /lib64/udev/rules.d/60-evdev.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-input.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-storage.rules
Reading rules file: /lib64/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /lib64/udev/rules.d/60-sensor.rules
Reading rules file: /lib64/udev/rules.d/60-serial.rules
Reading rules file: /run/udev/rules.d/61-dev-root-link.rules
Reading rules file: /lib64/udev/rules.d/61-kde-bluetooth-rfkill.rules
Reading rules file: /lib64/udev/rules.d/64-btrfs.rules
Reading rules file: /lib64/udev/rules.d/65-kvm.rules
Reading rules file: /lib64/udev/rules.d/69-dm-lvm-metad.rules
Reading rules file: /lib64/udev/rules.d/69-libmtp.rules
Reading rules file: /lib64/udev/rules.d/70-mouse.rules
Reading rules file: /lib64/udev/rules.d/70-power-switch.rules
Reading rules file: /lib64/udev/rules.d/70-touchpad.rules
Reading rules file: /lib64/udev/rules.d/70-uaccess.rules
Reading rules file: /lib64/udev/rules.d/71-seat.rules
Reading rules file: /lib64/udev/rules.d/73-seat-late.rules
RUN{builtin}: 'uaccess' unknown /lib64/udev/rules.d/73-seat-late.rules:15
Reading rules file: /lib64/udev/rules.d/75-net-description.rules
Reading rules file: /lib64/udev/rules.d/75-probe_mtd.rules
Reading rules file: /lib64/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /lib64/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-platform-serial-whitelist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-usb-device-blacklist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
Reading rules file: /lib64/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /lib64/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /lib64/udev/rules.d/78-sound-card.rules
Reading rules file: /lib64/udev/rules.d/80-drivers.rules
Reading rules file: /lib64/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /lib64/udev/rules.d/80-mm-candidate.rules
Reading rules file: /lib64/udev/rules.d/80-net-name-slot.rules
Reading rules file: /lib64/udev/rules.d/80-udisks2.rules
Reading rules file: /lib64/udev/rules.d/84-nm-drivers.rules
Reading rules file: /lib64/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /lib64/udev/rules.d/85-regulatory.rules
Reading rules file: /lib64/udev/rules.d/90-alsa-restore.rules
Reading rules file: /lib64/udev/rules.d/90-libinput-model-quirks.rules
Reading rules file: /lib64/udev/rules.d/90-network.rules
Reading rules file: /lib64/udev/rules.d/95-dm-notify.rules
Reading rules file: /lib64/udev/rules.d/95-upower-csr.rules
Reading rules file: /lib64/udev/rules.d/95-upower-hid.rules
Reading rules file: /lib64/udev/rules.d/95-upower-wup.rules
Reading rules file: /lib64/udev/rules.d/97-hid2hci.rules
Reading rules file: /lib64/udev/rules.d/99-fuse.rules
Reading rules file: /lib64/udev/rules.d/99-laptop-mode.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 32003 bytes strings
25996 strings (209886 bytes), 22466 de-duplicated (181414 bytes), 3531 trie nodes used
IMPORT builtin 'input_id' /lib64/udev/rules.d/50-udev-default.rules:14
capabilities/ev raw kernel attribute: b
capabilities/abs raw kernel attribute: 661800011000003
capabilities/rel raw kernel attribute: 0
capabilities/key raw kernel attribute: e420 30000 0 0 0 0
properties raw kernel attribute: 1
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 128 for any keys; found=0
test_key: checking bit block 192 for any keys; found=0
GROUP 97 /lib64/udev/rules.d/50-udev-default.rules:30
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:8
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is 'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:17
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is 'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/60-evdev.rules:21
IMPORT builtin 'hwdb' returned non-zero
IMPORT builtin 'hwdb' /lib64/udev/rules.d/70-touchpad.rules:11
PROGRAM 'libinput-device-group /sys/devices/platform/i8042/serio1/input/input6/event9' /lib64/udev/rules.d/80-libinput-device-groups.rules:7
starting 'libinput-device-group /sys/devices/platform/i8042/serio1/input/input6/event9'
'libinput-device-group /sys/devices/platform/i8042/serio1/input/input6/event9'(out) '11/2/e:isa0060/serio1'
'libinput-device-group /sys/devices/platform/i8042/serio1/input/input6/event9' [26859] exit with return code 0
IMPORT 'libinput-model-quirks /sys/devices/platform/i8042/serio1/input/input6/event9' /lib64/udev/rules.d/90-libinput-model-quirks.rules:19
starting 'libinput-model-quirks /sys/devices/platform/i8042/serio1/input/input6/event9'
'libinput-model-quirks /sys/devices/platform/i8042/serio1/input/input6/event9' [26860] exit with return code 0
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:30
IMPORT builtin 'hwdb' returned non-zero
value '[dmi/id]modalias' is 'dmi:bvnLENOVO:bvrA2CN45WW(V2.13):bd08/04/2016:svnLENOVO:pn80E3:pvrLenovoG50-45:rvnLENOVO:rnLancer5B2:rvrNotDefined:cvnLENOVO:ct10:cvrLenovoG50-45:'
2 character(s) replaced
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:46
IMPORT builtin 'hwdb' /lib64/udev/rules.d/90-libinput-model-quirks.rules:50
IMPORT builtin 'hwdb' returned non-zero
handling device node '/dev/input/event9', devnum=c13:73, mode=0660, uid=0, gid=97
preserve permissions /dev/input/event9, 020660, uid=0, gid=97
preserve already existing symlink '/dev/char/13:73' to '../input/event9'
created db file '/run/udev/data/c13:73' for '/devices/platform/i8042/serio1/input/input6/event9'
ACTION=add
DEVNAME=/dev/input/event9
DEVPATH=/devices/platform/i8042/serio1/input/input6/event9
ID_BUS=i8042
ID_INPUT=1
ID_INPUT_HEIGHT_MM=47
ID_INPUT_TOUCHPAD=1
ID_INPUT_TOUCHPAD_INTEGRATION=internal
ID_INPUT_WIDTH_MM=96
LIBINPUT_ATTR_PRESSURE_RANGE=10:8
LIBINPUT_ATTR_RESOLUTION_HINT=31x31
LIBINPUT_DEVICE_GROUP=11/2/e:isa0060/serio1
MAJOR=13
MINOR=73
SUBSYSTEM=input
USEC_INITIALIZED=122435669
Unload module index</code>

Any help is appreciated.
Comment 1 Peter Hutterer 2017-11-29 02:40:26 UTC
You need to run udevadm hwdb --update whenever you add or change a hwdb entry. That seems to be the step missing here. But from your description I think you have a kernel or firmware issue.

Run evemu-record --autorestart (see its man page) in the background and when it happens again, *attach* the output here, that should help figuring out what's going on.
Comment 2 Przemek 2017-11-29 22:15:15 UTC
Created attachment 135823 [details]
evemu-record output
Comment 3 Przemek 2017-11-29 22:15:58 UTC
Thanks for the quick response.

I don't think that this would be kernel .config issue, but I could be wrong.

Dmidecode in the part about pointing device says that touchpad is connected thru PS/2 interface so I assumed that I2C should not be under consideration.

"Handle 0x0029, DMI type 21, 7 bytes
Built-in Pointing Device
        Type: Touch Pad
        Interface: PS/2
        Buttons: 4"

I have both, Synaptic and Elanteh, PS/2 enabled in .config file and kernel choose Elantech driver by itself.

After executing "udevadm hwdb --update" and rebooting nothing changes in the output of "udevadm test"

I understand nothing if it's something wrong with the touchpad from the output of "evemu-record --autorestart=30 /dev/input/event9 evemu_record.txt" but here it goes. It was taken when problem occurred.

I have also attached my .config.
Comment 4 Przemek 2017-11-29 22:16:49 UTC
Created attachment 135824 [details]
kernel config
Comment 5 Peter Hutterer 2017-11-30 03:59:49 UTC
ok, this touchpad is busted, it sends ghost touches at more-or-less arbitrary locations. Either that our you had three cats tap-dancing on the touchpad. Has this laptop worked fine until a recent update?

The ghost touches are there in the evemu output, which means they're there in the kernel output. So either your touchpad has recently died or some kernel update has broken the elantech driver.

Always handy to attach your dmesg, maybe it tells us something.
Comment 6 Przemek 2017-11-30 19:26:22 UTC
Created attachment 135834 [details]
dmesg output

It happened earlier very sporadically so I was blaming myself for not properly using touchpad. Now it happens more often, so after little investigation I have spotted that physical dimension of touchpad aren't equal to those reported by libinput and this could be the cause of this strange behavior. I have also checked videos about ghost/phantom clicks to see if this applies to my netbook. IMHO it is little bit different. In the "ghost trance" pointer does not move when I am not touching surface, and with mentioned in first post "hovering" pointer follow my finger as it would be on the surface. But when I place finger on the surface then touchpad gets crazy so i thought that it was to sensitive, but custom rules wont be applied by udevadm. You have to wait couple of seconds when touchpad comes down or click physical button to cancel this behavior.
But when those clicks comes from kernel this really sounds like its a problem with kernel driver or hardware/firmware.

Here is dmesg.
Comment 7 Peter Hutterer 2017-11-30 22:40:01 UTC
Created attachment 135846 [details]
finger pressure map over time
Comment 8 Peter Hutterer 2017-11-30 22:45:15 UTC
The dimensions only affect pointer acceleration etc, they don't produce the output this recording shows. Grab mtview and run it, then reproduce it. You'll see the jumping touches quickly. https://github.com/whot/mtview

There is no single definition of ghost touches beyond "the hardware thinks there is a touch where there is none". That's definitely the case here because there's no way this was your physical input. Look at attachment 135846 [details], it illustrates the pressure the recording shows. It's all over the place, and that diagonal line from 20-42s is just odd, no way could you control your finger that precisely that you get a pressure increase like this.

If I read comment 6 correctly:
* no pointer movement when not touching
* pointer movement ok when close to the surface without touching
* pointer movement crazy when touching

I don't know how we could possibly detect this. Your best bet would be to change the pressure ranges and hope that palm detection kicks in for most of the ghost touches. But that's not a guarantee. See  https://wayland.freedesktop.org/libinput/doc/latest/udev_config.html#hwdb for the instructions, this should make your earlier hwdb work.
Comment 9 Przemek 2017-12-01 19:47:22 UTC
Created attachment 135862 [details]
full dmidecode output

Here is full dmidecode output.

I fogrot to attach it with previous post, but with such obvious evidence I see no point in playing with changing the pressure ranges. I really think it wont resolve anything.

I agree with your opinion that this touchpad is finished and laptop needed to be RMA'd. 

Thank you very much for heping me to resolve this, and my apologies that I thought it was libinput problem.
Comment 10 Peter Hutterer 2017-12-04 00:52:37 UTC
fwiw, dmidecode doesn't usually matter for libinput's bits. The closest we get is using the dmi modalias, but that's just for hwdb entries.

I'm closing the bug as wontfix, simply because I don't think there's anything we can do in libinput to fix it, sorry. Give the pressure bits a try anyway, it may still make it mostly usable.
Comment 11 Przemek 2017-12-04 06:39:44 UTC
Fair enough.
I will give it a chance witch changeing pressure ranges. I wil see how it goes.
Thanks anyway.
Comment 12 Przemek 2017-12-04 10:33:23 UTC
I mean "with" - T9 android dictionary.
Once again thanks.
Comment 13 Benjamin Tissoires 2017-12-08 08:43:29 UTC
It could be interesting to see if the touchpad is not using a SMBus connection after all. I would be surprised the Windows version of the driver suffer the same issues.

Could you apply the last five commits from https://github.com/bentiss/linux/commits/elan_i2c-v4.15-rc2+ (on top of a v4.14 or this branch directly)?

These patches should bind the touchpad over SMBus if the PS/2 interface says it is capable, and we might solve the issue.

Once the patches are applied, please upload a dmesg, as the last commit says, there will be some debug information whether or not this touchpad is SMBus capable.
Comment 14 Przemek 2017-12-08 10:35:57 UTC
Created attachment 136050 [details]
dmesg output after patches

Hi Benjamin,
I cannot open link provided in comment 13, but I have applied last 5 commits from https://github.com/bentiss/linux/commits/elan_i2c-v4.15-rc2%2B
- Input: elan_i2c - add trackstick report 
- Input: elantech - split device info into a separate structure 
- Input: elantech - query the resolution in query_info 
- Input: elantech - add support for SMBus devices
- WIP: just pr_err to trace elantech initialization

Here is dmesg output.
Comment 15 Benjamin Tissoires 2017-12-08 10:43:12 UTC
> I cannot open link provided in comment 13,

Yeah, sorry, bugzilla messed up the final '+' in the address. You applied the correct patches BTW. And thanks for the fast tests!

As the dmesg shows, the device is not capable of anything but PS/2:
[    5.079823] elantech_init bus: 0 drivers/input/mouse/elantech.c:1954

(bus '0' means ETP_BUS_PS2_ONLY)

So there is not much we can do besides quirks from libinput.
Comment 16 Przemek 2017-12-08 13:48:17 UTC
Arghhh, too fast clicking, I haven't notice the "+" sign at the end, either would not bother you to check if I was patching correct commits. Sorry.

I was just packing laptop up cause it is going to be RMA anyway, so decided to make quick test with those patches hoping that we could change something, this would be better than week or two without work tool.
At least we know that this touchpad is PS2 only.

As for the quirks, as I wrote before, I don't think this could help a lot. Searching internet showed up that this malfunction is common with linux and windows on this model, so I have 99% probability that this touchpad is already dead or dying.

Thank you very much for your help.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.