Bug 1212779

Summary: DELL0A78:00 27C6:0D42 Touchpad (gestures) doesn't work properly after resuming from suspend.
Product: [openSUSE] openSUSE Tumbleweed Reporter: user 001 <neupanebishal2001>
Component: KernelAssignee: openSUSE Kernel Bugs <kernel-bugs>
Status: NEW --- QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None CC: neupanebishal2001, tiwai
Version: CurrentFlags: tiwai: needinfo? (neupanebishal2001)
Target Milestone: ---   
Hardware: 64bit   
OS: openSUSE Tumbleweed   
See Also: https://bugzilla.kernel.org/show_bug.cgi?id=217761
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: The dmesg before suspending.
Dmesg after suspending (after resume).
Log coverying installation of the default and patched kernel.

Description user 001 2023-06-27 14:52:17 UTC
Opensuse Tumbleweed release 6.3.7-1-default

Windowing System: Wayland
Hardware: Dell Inspiron 5515, ryzen 5 5500U
Touchpad Information from hwinfo --mouse

50: PS/2 00.0: 10500 PS/2 Mouse
  [Created at input.249]
  Unique ID: AH6Q.rKa1+aijZtE
  Hardware Class: mouse
  Model: "DELL0A78:00 27C6:0D42 Touchpad"
  Vendor: 0x27c6 
  Device: 0x0d42 "DELL0A78:00 27C6:0D42 Touchpad"
  Compatible to: int 0x0210 0x0001
  Device File: /dev/input/mice (/dev/input/mouse2)
  Device Files: /dev/input/mice, /dev/input/mouse2, /dev/input/event3, /dev/input/by-path/platform-AMDI0010:03-event-mouse, /dev/input/by-path/platform-AMDI0010:03-mouse
  Device Number: char 13:63 (char 13:34)
  Driver Info #0:
    Buttons: 1
    Wheels: 0
    XFree86 Protocol: explorerps/2
    GPM Protocol: exps2
  Config Status: cfg=no, avail=yes, need=no, active=unknown

The exact problem:
Touchpad gestures don't work at all after resuming from suspend and the pointer is also somewhat laggy. The bug occurs after closing the lid (which is configured to suspend) or suspending from anywhere else.

Workaround:
The workaround mentioned in https://bbs.archlinux.org/viewtopic.php?id=282440 also works in my case. So, I created a systemd service which executed before and after suspending and saved it under /usr/lib/systemd/system-sleep/make-touchpad-work.sleep 

The actual script:
------------------------------------------------------------------------------
#!/bin/sh

case $1/$2 in
  pre/*)
    echo "Going to $2..."
    # Place your pre-suspend commands here, or `exit 0` if no pre-suspend action required
    modprobe -r i2c_hid_acpi
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
    sleep 2
    modprobe i2c_hid_acpi
    ;;
esac
-------------------------------------------------------------------------------

As much as I understand it's just a workaround for the problem. Posting it here, so that it is addressed properly and get information about the potential errors it may cause (if there are any).

And, this merge request was merged on NixOS for dell inspiron-5515 https://github.com/NixOS/nixos-hardware/commit/d7a12fcc071bff59bd0ead589c975d802952a064 
which seems to address the same issue.
Comment 1 Takashi Iwai 2023-07-05 15:06:04 UTC
Is it a recent regression, or it's been so from the beginning?

As far as I see, the i2c-hid-acpi driver merely uses the standard i2c_hid_core_pm stuff, so I wonder what's going wrong.

One thing that might be related is that i2c_hid_acpi_probe() has a call of acpi_device_fix_up_power().

I'm building a kernel with a hackish test patch.  It's being built in OBS home:tiwai:bsc1212779 repo.  Could you test it later once after the build finishes (it takes an hour or so)?
Note that it's an unofficial build, hence you'd need to disable Secure Boot.
Comment 2 Takashi Iwai 2023-07-05 18:05:03 UTC
(In reply to Takashi Iwai from comment #1) 
> I'm building a kernel with a hackish test patch.  It's being built in OBS
> home:tiwai:bsc1212779 repo.  Could you test it later once after the build
> finishes (it takes an hour or so)?

The package is ready at:
  http://download.opensuse.org/repositories/home:/tiwai:/bsc1212779/standard/
Comment 3 user 001 2023-07-07 11:19:28 UTC
The provided kernel build: kernel-default-6.4.1-1.1.g6fd2851 from the repository https://download.opensuse.org/repositories/home:/tiwai:/bsc1212779/standard/ doesn't solve the problem of touchpad gesture not working after suspend.

Tested by adding the provided repository and installing the kernel. The secure boot was already disabled. 

I removed the scrip placed under /usr/lib/systemd/system-sleep/ and suspended the laptop after booting into the provided patched kernel, and after resuming from suspend, the touchpad gestures didn't work. In the same kernel built, if I again placed the script and resumed from suspend, it functioned normally.

I don't know where the logs are supposed to be (I don't see anything noticeable in journalctl). If given proper instructions on collecting logs, it would be happy to provide that too.

> Is it a recent regression, or it been so from the beginning?
There were a few problems with s2idle on my system (dell 5515 with ryzen 5500U) from the start, which was solved recently. It managed to resume from suspend only on few occasions. But I don't remember having any touchpad issue when it resumed from the suspend. 

Also, I had a problem with the ribbon cable of the touchpad which I fixed recently, and on a few occasions the touchpad issue popped up I thought it was a hardware problem.

I think the touchpad worked normally even after suspend in between the s2idle issue being solved and hardware issue popping up.

How do I know it's not a hardware issue ?
The dell diagnostic doesn't detect any errors and the script works every time.
Comment 4 Takashi Iwai 2023-07-07 14:34:24 UTC
Ah, it's only about the gesture, and the device itself keeps somehow working after the resume?

In anyway, I'm rebuilding another test kernel in OBS home:tiwai:bsc1212779-2 repo.  Could you check it later once after the build finishes?
Comment 5 user 001 2023-07-07 14:39:23 UTC
>Ah, it's only about the gesture, and the device itself keeps somehow working >after the resume?

Yes, the touchpad functions somewhat normally after the resume. The pointer is slow (it's like acceleration being disabled) and sometimes the clicks don't perform as expected but the touchpad is detected (I don't know if it's detected as a touchpad or some other legacy mouse).

>In anyway, I'm rebuilding another test kernel in OBS home:tiwai:bsc1212779-2 >repo.  Could you check it later once after the build finishes?
Sure
Comment 6 user 001 2023-07-10 13:57:58 UTC
Created attachment 868121 [details]
The dmesg before suspending.
Comment 7 user 001 2023-07-10 13:59:52 UTC
Created attachment 868122 [details]
Dmesg after suspending (after resume).
Comment 8 user 001 2023-07-10 14:40:35 UTC
The kernel build from https://download.opensuse.org/repositories/home:/tiwai:/bsc1212779-2/standard/ version 6.4.1-1.1.g29059d3 didn't solve the touchpad gesture bug.


the dmesg and journalctl log are attached, the journalctl log should cover the installation of the default kernel and the kernel from given repo (patched one).
Comment 9 user 001 2023-07-10 14:42:16 UTC
Created attachment 868124 [details]
Log coverying installation of the default and patched kernel.
Comment 10 Takashi Iwai 2023-07-10 15:18:38 UTC
Hrm, then I have no further idea.  It has to be reported to the upstream devs.
You can try to reach out in bugzilla.kernel.org, for example.
Comment 11 user 001 2023-07-10 15:22:18 UTC
Okay, got it.

I will report after properly learning about the reporting convention and getting the related logs (if I can get any).
Comment 12 Takashi Iwai 2023-07-17 13:15:35 UTC
Thanks.  When you reporting, feel free to put me (tiwai@suse.de) to Cc, so that I can track the update (or help providing something like a test kernel), too.