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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.