Re: PS/2 keyboard of laptop Dell XPS 13 9360 goes missing after S3

From: Paul Menzel
Date: Fri Jan 26 2024 - 03:55:33 EST


Dear Hans,


Thank you for your reply, and sorry for the delay on my side. I needed to set up an environment to easily build the Linux kernel.


Am 22.01.24 um 14:43 schrieb Hans de Goede:

On 1/21/24 15:26, Paul Menzel wrote:

[…]

Am 20.01.24 um 21:26 schrieb Hans de Goede:

On 1/18/24 13:57, Paul Menzel wrote:
#regzbot introduced v6.6.11..v6.7

There seems to be a regression in Linux 6.7 on the Dell XPS 13 9360 (Intel i7-7500U).

     [    0.000000] DMI: Dell Inc. XPS 13 9360/0596KF, BIOS 2.21.0 06/02/2022

The PS/2 keyboard goes missing after S3 resume¹. The problem does not happen with Linux 6.6.11.

Thank you for reporting this.

Can you try adding "i8042.dumbkbd=1" to your kernel commandline?

This should at least lead to the device not disappearing from

"sudo libinput list-devices"

The next question is if the keyboard will still actually
work after suspend/resume with "i8042.dumbkbd=1". If it
stays in the list, but no longer works then there is
a problem with the i8042 controller; or interrupt
delivery to the i8042 controller.

If "i8042.dumbkbd=1" somehow fully fixes things, then I guess
my atkbd driver fix for other laptop keyboards is somehow
causing issues for yours.

Just a quick feedback, that booting with `i8042.dumbkbd=1` seems to fix the issue.

If "i8042.dumbkbd=1" fully fixes things, can you try building
your own 6.7.0 kernel with commit 936e4d49ecbc:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936e4d49ecbc8c404790504386e1422b599dec39

reverted?

I am going to try that as soon as possible.

Assuming this was not some one time glitch with 6.7.0,
I have prepared a patch hopefully fixing this (1) as well
as a follow up fix to address another potential issue which
I have noticed.

Unfortunately, it wasn’t just a glitch.

Can you please give a 6.7.0 (2) kernel with the 2 attached
patches added a try ?

I know building kernels can be a bit of work / takes time,
sorry. If you are short on time I would prefer testing these 2
patches and see if they fix things over trying a plain revert.

Applying both patches on v6.7.1

$ git log --oneline -3
053fa44c0de1 (HEAD -> v6.7.1) Input: atkbd - Do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
0e0fa0113c7a Input: atkbd - Skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID
a91fdae50a6d (tag: v6.7.1, stable/linux-6.7.y, origin/linux-6.7.y) Linux 6.7.1

I am unable to reproduce the problem in eight ACPI S3 suspend/resume cycles. The DMAR errors [3] are also gone:

$ sudo dmesg --level alert,crit,err,warn
[ 0.065292] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[ 0.065292] MMIO Stale Data CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/processor_mmio_stale_data.html for more details.
[ 0.092064] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[ 0.294522] hpet_acpi_add: no address or irqs in _CRS
[ 0.345003] i8042: Warning: Keylock active
[ 1.063807] usb: port power management may be unreliable
[ 1.178339] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[ 37.712916] wmi_bus wmi_bus-PNP0C14:01: WQBC data block query control method not found
[ 67.307070] warning: `atop' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
[ 141.861803] ACPI Error: AE_BAD_PARAMETER, Returned by Handler for [EmbeddedControl] (20230628/evregion-300)
[ 141.861808] ACPI Error: Aborting method \_SB.PCI0.LPCB.ECDV.ECR1 due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)
[ 141.861814] ACPI Error: Aborting method \_SB.PCI0.LPCB.ECDV.ECR2 due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)
[ 141.861818] ACPI Error: Aborting method \ECRW due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)
[ 141.861821] ACPI Error: Aborting method \ECG1 due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)
[ 141.861824] ACPI Error: Aborting method \NEVT due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)
[ 141.861827] ACPI Error: Aborting method \_SB.PCI0.LPCB.ECDV._Q66 due to previous error (AE_BAD_PARAMETER) (20230628/psparse-529)

Please tell me, if I can do anything else.


Kind regards,

Paul


1) Assuming it is caused by this commit in the first place,
which seems likely

2) 6.8-rc1 has a follow up patch which is squashed into the
first patch here, so these patches will only apply cleanly
to 6.7.0 .

[3]: https://lore.kernel.org/all/9a24c335-8ec5-48c9-9bdd-b0dac5ecbca8@xxxxxxxxxxxxx/

     [    1.435071] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
     [    1.435409] i8042: Warning: Keylock active
     [    1.437624] serio: i8042 KBD port at 0x60,0x64 irq 1
     [    1.437631] serio: i8042 AUX port at 0x60,0x64 irq 12
     […]
     [    1.439743] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0

     $ sudo libinput list-devices
     […]
     Device:           AT Translated Set 2 keyboard
     Kernel:           /dev/input/event0
     Group:            15
     Seat:             seat0, default
     Capabilities:     keyboard
     Tap-to-click:     n/a
     Tap-and-drag:     n/a
     Tap drag lock:    n/a
     Left-handed:      n/a
     Nat.scrolling:    n/a
     Middle emulation: n/a
     Calibration:      n/a
     Scroll methods:   none
     Click methods:    none
     Disable-w-typing: n/a
     Disable-w-trackpointing: n/a
     Accel profiles:   n/a
     Rotation:         0.0

`libinput list-devices` does not list the device after resuming
from S3. Some of the function keys, like brightness and airplane
mode keys, still work, as the events are probably transmitted over
the embedded controller or some other mechanism. An external USB
keyboard also still works.

I haven’t had time to further analyze this, but wanted to report
it. No idea


Kind regards,

Paul


¹ s2idle is not working correctly on the device, in the sense, that
energy usage is very high in that state, and the full battery is at
20 % after leaving it for eight hours.