From: Tobias Dyckerhoff <tobias.dyckerhoff@octaplex.net>
To: linux-input@vger.kernel.org
Cc: linux-i2c@vger.kernel.org, Jiri Kosina <jikos@kernel.org>,
Benjamin Tissoires <bentiss@kernel.org>
Subject: i2c-hid: Synaptics 06CB:CD97 (Dell Latitude 7300) - touchpad failure modes: post-resume/mid-session IRQ storm, silent idle stall, coordinate jumps discarded by libinput; wedge captured at the raw-HID level (2026-11-10)
Date: Tue, 10 Nov 2026 17:43:22 +0100 [thread overview]
Message-ID: <avNI9_rElXTp48Mn@ferret> (raw)
Hello,
recurring touchpad failures on a Dell Latitude 7300, Synaptics I2C-HID pad,
HID v1.00:
vendor 06cb product cd97 ("DELL08E0:00 06CB:CD97 Touchpad")
bus: i2c_designware.1, IRQ 17 (shared idma64.1 + i2c_designware.1)
Dell BIOS 1.43.0 (newest LVFS release; Dell's Synaptics touchpad
firmware utility does not list the Latitude 7300)
userspace: xf86-input-libinput, libinput 1.25 (Ubuntu noble)
The behaviour is identical on 6.8.0-147 (Ubuntu noble base),
7.0.0-42 (noble HWE) and 7.3.1 mainline (currently running, 6.5
days up). There is no 06CB:CD97 entry in any i2c-hid quirk table through
v7.4-rc1 (RESET_ON_RESUME currently covers only the ALPS_JP
any-product and SYNA2393 cases). This is not a regression - it
behaves the same on every kernel I have run on this machine.
Three distinct failure modes
(1) IRQ storm. IRQ17 fires at hundreds to thousands per second with
no usable input events. First seen after a partially-failed
suspend + resume; later occurrences mid-session with no power
transition involved (measured via /proc/interrupts deltas:
~480/s on one occasion, ~900/s, and ~3400/s on others).
Driver state looks healthy otherwise. Recovery: unbind/bind of
i2c_hid_acpi (i.e. a HID RESET) restores the device within
seconds. One occurrence was rebind-resistant (the rebind ran,
the pad re-probed, but the storm intensified); a full
suspend/resume cycle recovered that one.
(2) Silent idle stall. After some minutes of idle, the pad stops
responding; IRQ17 goes completely silent while touching (zero
interrupts over seconds of finger contact) while the driver
still considers the device healthy (X-level props normal). No
kernel log message at all. Recovery: unbind/bind as above.
This matches in shape the 2026-04 report for 06CB:CE65
(Latitude 7420, unsolicited 0x0c sleep-notify report suspected;
I have no hidraw trace of my device doing the same - analog,
not confirmed for CD97).
(3) Coordinate-jump discard state. IRQ17 fires at normal touch
report rates, the kernel delivers events, but libinput discards
every motion event:
(EE) event5 - DELL08E0:00 06CB:CD97 Touchpad: kernel bug:
Touch jump detected and discarded.
(84 occurrences in the current Xorg.0.log as of 2026-11-10, up
from 71 on Nov 8 and 31 the day before; libinput rate-limits the
message to 5/24h, but every user-space recovery re-opens the
evdev stream and re-arms the limit, so the true frequency is
higher).
The pad is functionally dead. Recovery:
`xinput disable <id>; xinput enable <id>` - i.e. merely
reopening the evdev stream - restores motion in ~1 s, no kernel
rebind needed.
Recurrence is multiple times per day. The local recovery log counts
53 user-side resets since the mitigation was installed on Nov 2
(7/6/0/6/6/15/11/1/1 per day, Nov 2 through Nov 10), eight of them
within one hour on Nov 8 - roughly one wedge every seven minutes.
(Full log in the evidence bundle; a one-day follow-up snapshot with
re-measured counters, evidence/03-persistence-20261108.txt, is part
of the bundle; the Nov-10 episode below was captured end-to-end.)
An odd baseline observation
On the current boot (6.5 days, mostly idle desk work) /proc/interrupts
shows 97.2 million interrupts on IRQ17 - a sustained ~173/s average -
while the sibling i2c_designware controllers sit at 0-2 interrupts
each, and the pad works normally meanwhile. An early re-measurement
(89.2M at 4.9 days, then ~430/s over the previous 31 h) first read as
an accelerating baseline; a further 39-hour follow-up on the same boot
disproved that: the counter only rose to 97.2M, ~56/s across those 39
hours despite one wedged episode inside them. The background rate is
episode-coupled: near zero while the pad sits untouched and healthy,
and erupting during wedge states (captured at ~1.2 kHz wedged but
idle, see below). dmesg for this boot contains ZERO i2c-hid errors
(no "incomplete report" lines at all) - including during the captured
storm. So even in its "working" state the device keeps the IRQ line
far busier than its siblings do.
Instrumented episode (2026-11-10; all traces in the bundle)
After an unremarkable s2idle suspend 09:24 -> resume 10:18 (no
i2c-hid messages at all) the pad wedged again within ~20 minutes.
Captured BEFORE recovery, twice, six minutes apart:
* IRQ17 while touching the dead pad: 2421/s then 1598/s
(capture I), 3142/s then 3606/s (capture II); wedged but not
being touched it sustained ~1.2 kHz - that is roughly 20-30
interrupts per delivered report.
* hid-recorder on the wedged device ran flawlessly: the full
669-byte report descriptor plus 3,812 raw input reports (16 s
+ 18 s captures). Every single one is a standard 48-byte
ReportID 3 touch report: smooth coordinates (max step 57 of
1196 x-units = ~5 mm per 7.2 ms report), monotonic device
scan-time. No truncated reports, no error reports, no
vendor report 0x0c.
* evemu-record shows the kernel delivering that same stream
(~80-140 reports/s) as perfectly normal MT events.
* Yet Xorg logged three fresh "Touch jump detected and
discarded" lines in those same minutes, and the cursor stayed
dead for the user throughout.
* Recovery was, once more, the evdev reopen alone (xinput
disable/enable). Minutes later, idle, IRQ17 read literally
0 interrupts per 10 s.
So during this wedge the I2C transport, the HID layer and evdev all
look healthy and quiet - zero kernel errors - while IRQ17 storms at
~25x the report rate and userspace discards every motion event.
What works / what I could not fix
* unbind/bind (HID RESET): reliable for (1) and (2), except the
one rebind-resistant case described above
* evdev reopen (xinput disable/enable): reliable instant fix for (3)
* BIOS 1.15.1 -> 1.43.0 upgrade: did not change anything
* no Dell touchpad firmware update exists for this device
Questions
1. Would an
{ I2C_VENDOR_ID_SYNAPTICS, 0xCD97, I2C_HID_QUIRK_RESET_ON_RESUME }
entry be the right direction (cf. the Sep 2026 SYNA32A4 06CB:CE17
post-resume IRQ-storm discussion, where that quirk was proposed)?
The Nov-10 episode struck ~20 min after a clean resume, which
would fit that trigger. I'm happy to build and test such a
patch for a week of real use.
2. The bundle now contains hid-recorder and evemu traces of a live
wedge (Nov 10, see above). Is a deeper capture worth adding at
the next occurrence - i2cdump of the designware controller, an
i2c trace via ftrace, or something else? Failures recur daily
here, so follow-ups are cheap.
3. The interrupts-per-report mismatch during a wedge (~25x, all
reports well-formed) - where would you want that looked at:
driver, controller, or firmware? I can measure in whatever
form is useful (ftrace, i2c trace points, counters).
References to threads with the same signature family (other
Synaptics 06CB devices):
* Sep 2026, linux-input: "i2c-hid: IRQ storm from Synaptics
SYNA32A4 (06CB:CE17) after resume"
* Apr 2026, linux-i2c: 06CB:CE65 (Latitude 7420) - touchpad dies
after ~6 min idle, unsolicited report 0x0c suspected, driver
never answers, firmware locks up; rebind recovers
Evidence bundle (happy to send inline or as attachments, tell me
what you prefer):
environment DMI, kernel config of the running 7.3.1, device
stanzas, IRQ snapshot + counter math
recurrence local reset log (53 resets over 9 days), plus a
one-day persistence follow-up snapshot (IRQ17
re-measured; episode-coupled, see above)
libinput-jumps all "Touch jump" lines of the current boot
journal-samples dmesg excerpts of the probe + one storm night
wedge-traces the full Nov-10 instrumented episode: report
descriptor + 3,812 raw reports + 2,812 evdev
records + IRQ deltas + clean kernel logs
(evidence/wedges/20261110-*/)
Best regards,
Tobias
next reply other threads:[~2026-11-10 16:43 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 16:43 Tobias Dyckerhoff [this message]
2026-11-10 17:19 ` i2c-hid: Synaptics 06CB:CD97 (Dell Latitude 7300) - touchpad failure modes: post-resume/mid-session IRQ storm, silent idle stall, coordinate jumps discarded by libinput; wedge captured at the raw-HID level (2026-11-10) Tobias Dyckerhoff
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=avNI9_rElXTp48Mn@ferret \
--to=tobias.dyckerhoff@octaplex.net \
--cc=bentiss@kernel.org \
--cc=jikos@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).