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)