Re: PS/2 keyboard of laptop Dell XPS 13 9360 goes missing after S3
From: Hans de Goede
Date: Fri Jan 26 2024 - 08:33:18 EST
Hi Paul,
On 1/26/24 08:03, Paul Menzel wrote:
> 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.
No problem thank you for testing this.
> 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:
Thanks.
So thinking more about this I think the DMAR errors are actually the real cause of the issue here, specifically if we replace: f0 with 00 (I guess DMAR uses the high bits for its own purposes) in
`[INTR-REMAP] Request device [f0:1f.0] fault index 0x0`
then the device ID is 00:1f.0 which is the ISA bridge and [INTR-REMAP] errors are known to disable interrupts. The PS/2 controller (which sits behind the ISA bridge) interrupt getting disabled would explain the suspend/resume keyboard issue better then the atkbd.c changes I have been focusing on.
So then the question becomes why does the 6.7.1 kernel not show the DMAR errors. I don't see anything between 6.7.0 and 6.7.1 which explains this. But maybe your local build is using a different configuration which explains this.
Can you try your local 6.7.1 build without my 2 patches? The quickest way to do that would be to run: "git reset --hard HEAD~2" and then re-run the make commandos, this will re-use your previous build so it should be pretty quick.
If things still work after that then the problem is not with the atkbd code.
Regards,
Hans