On 6.12.x kernels I2C dies on the Intel i5-1235U CPU based notebook (KVADRA NAU LE14U)
From: Alexander Pevzner
Date: Mon Feb 03 2025 - 10:58:52 EST
Hi!
On the KVADRA NAU LE14U notebook, the I2C subsystem stops functioning
after a period of inactivity (10-30 minutes).
The notebook is equipped with an Intel i5-1235U CPU, four Intel
Corporation Alder Lake PCH Serial IO I2C controllers, and a SYNA3602
touchpad connected via the I2C serial bus.
After some idle time, the following lines appear in the kernel log:
-----
RSP: 0018:ffffa7d5001b7e80 EFLAGS: 00000246
RAX: ffff93ab5f700000 RBX: ffff93ab5f761738 RCX: 000000000000001f
RDX: 0000000000000002 RSI: 0000000033483483 RDI: 0000000000000000
RBP: 0000000000000001 R08: 000004c7d586da52 R09: 0000000000000007
R10: 000000000000002a R11: ffff93ab5f744f04 R12: ffffffffb964fe60
R13: 000004c7d586da52 R14: 0000000000000001 R15: 0000000000000000
cpuidle_enter+0x2d/0x40
do_idle+0x1ad/0x210
cpu_startup_entry+0x29/0x30
start_secondary+0x11e/0x140
common_startup_64+0x13e/0x141
</TASK>
handlers:
[<00000000fa02aea8>] idma64_irq [idma64]
[<00000000d22a6968>] i2c_dw_isr
Disabling IRQ #27
-----
After this, the touchpad connected via I2C stops working.
This issue occurs on ROSA Linux with kernel version 6.12.10 and Fedora
41 with kernel version 6.12.11, but it does not occur on Fedora with
kernel version 6.11.4.
According to the following discussion, it also reproduces on Arch Linux
with kernel version 6.12.8:
https://bbs.archlinux.org/viewtopic.php?id=302348
Although the notebook branding mentioned in that discussion is different
(MONSTER HUMA H4 V5.2), the hardware configuration appears to be similar.
It seems that the problem is not specific to any particular distribution
and is related to the 6.12.* versions of the kernel.
We also have a simple workaround module that resolves the issue by
installing a shared interrupt handler for all IRQs owned by I2C. This
handler does nothing but return IRQ_HANDLED, effectively preventing the
kernel from disabling this interrupt as spurious.
The source code for this module is available here:
https://github.com/alexpevzner/hotfix-kvadra-touchpad
When this module is loaded, the notebook operates very stably; the I2C
(touchpad) functions reliably, and the interrupt rate appears reasonable
(around 400 interrupts per second when the touchpad is active).
--
Wishes, Alexander Pevzner (pzz@xxxxxxxxxxxx)